initGeoLocator method

Future<void> initGeoLocator()

Implementation

Future<void> initGeoLocator() async {
  LocationPermission permission = await Geolocator.checkPermission();
  if (permission == LocationPermission.denied ||
      permission == LocationPermission.unableToDetermine) {
    permission = await GeolocatorPlatform.instance.requestPermission();
  }

  if (permission == LocationPermission.always ||
      permission == LocationPermission.whileInUse) {
    startLocationStream();
    bool isLocationEnabled = await Geolocator.isLocationServiceEnabled();
    if (!isLocationEnabled) {
      int count = 0;
      Timer.periodic(const Duration(seconds: 2), (timer) async {
        isLocationEnabled = await Geolocator.isLocationServiceEnabled();
        if (isLocationEnabled) {
          startLocationStream();
          timer.cancel();
        } else if (++count >= 5) {
          timer.cancel();
        }
      });
    }
  }
}