getLocation function

Future<LocationData?> getLocation()

Get device location Returns null if permission is denied or unavailable

Implementation

Future<LocationData?> getLocation() async {
  try {
    // Check if location services are enabled
    bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
    if (!serviceEnabled) {
      return null;
    }

    // Check location permissions
    LocationPermission permission = await Geolocator.checkPermission();
    if (permission == LocationPermission.denied) {
      permission = await Geolocator.requestPermission();
      if (permission == LocationPermission.denied) {
        return null;
      }
    }

    if (permission == LocationPermission.deniedForever) {
      return null;
    }

    // Get current position
    Position position = await Geolocator.getCurrentPosition(
      desiredAccuracy: LocationAccuracy.high,
      timeLimit: const Duration(seconds: 5),
    );

    return LocationData(
      latitude: double.parse(position.latitude.toStringAsFixed(3)),
      longitude: double.parse(position.longitude.toStringAsFixed(3)),
    );
  } catch (e) {
    return null;
  }
}