getCurrentLocation method

Future<LocationModel?> getCurrentLocation({
  1. LocationAccuracy accuracy = LocationAccuracy.high,
  2. Duration? timeLimit,
})

Get current location with coordinates only

Implementation

Future<LocationModel?> getCurrentLocation({
  LocationAccuracy accuracy = LocationAccuracy.high,
  Duration? timeLimit,
}) async {
  try {
    // Check if location services are enabled
    bool serviceEnabled = await isLocationServiceEnabled();
    if (!serviceEnabled) {
      throw Exception('Location services are disabled');
    }

    // Check permissions
    LocationPermission permission = await checkPermission();
    if (permission == LocationPermission.denied) {
      permission = await requestPermission();
      if (permission == LocationPermission.denied) {
        throw Exception('Location permission denied');
      }
    }

    if (permission == LocationPermission.deniedForever) {
      throw Exception('Location permissions are permanently denied');
    }

    // Get position
    LocationSettings locationSettings = LocationSettings(
      accuracy: accuracy,
      timeLimit: timeLimit,
    );

    Position position = await Geolocator.getCurrentPosition(
      locationSettings: locationSettings,
    );

    return LocationModel.fromCoordinates(
      latitude: position.latitude,
      longitude: position.longitude,
    );
  } catch (e) {
    throw Exception('Failed to get current location: $e');
  }
}