getLocation method

  1. @override
Future<LocationInfo?> getLocation({
  1. int timeout = 6,
  2. bool useLastKnownLocation = false,
})
override

获取定位信息 timeout:获取location超时时间 useLastKnownLocation:是否优先将上次的位置信息作为结果返回。如为false,则会获取当前最新值

Implementation

@override
Future<LocationInfo?> getLocation(
    {int timeout = 6, bool useLastKnownLocation = false}) async {
  if (!Platform.isAndroid) return null;
  LocationInfo? location;
  if (useLastKnownLocation) {
    location = await getLastKnownLocation();
    if (location?.latitude != null && location?.longitude != null) {
      return location;
    }
  }
  getLocationListener((LocationInfo locationInfo) {
    location = locationInfo;
  });
  int count = timeout * 5; //一秒检测5次
  while (count-- > 0 && location == null) {
    await Future.delayed(const Duration(milliseconds: 200));
  }
  cancelLocationListener();
  return location;
}