getLocation static method

Future<Map<String, String>> getLocation()

Implementation

static Future<Map<String, String>> getLocation() async {
  try {
    bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
    if (!serviceEnabled) {
      doPrint('Location services are disabled.');
      return {'latitude': '0.0', 'longitude': '0.0'};
    }
    LocationPermission permission = await Geolocator.checkPermission();
    if (permission == LocationPermission.denied) {
      doPrint('Requesting location permission...');
      permission = await Geolocator.requestPermission();
      if (permission == LocationPermission.denied) {
        doPrint('Location permission denied.');
        return {'latitude': '0.0', 'longitude': '0.0'};
      }
    }
    if (permission == LocationPermission.deniedForever) {
      doPrint('Location permissions are permanently denied.');
      return {'latitude': '0.0', 'longitude': '0.0'};
    }
    doPrint('Fetching current position...');
    Position position = await Geolocator.getCurrentPosition(
      desiredAccuracy: LocationAccuracy.low,
      timeLimit: const Duration(seconds: 5),
    );
    doPrint(
      'Location found: ${position.latitude}, ${position.longitude}',
    );
    return {
      'latitude': position.latitude.toString(),
      'longitude': position.longitude.toString(),
    };
  } catch (e) {
    doPrint('Error getting location $e');
    return {'latitude': '0.0', 'longitude': '0.0'};
  }
}