requestLocationPermission static method

Future<LocationPermissionStatus> requestLocationPermission()

Check and request location permission

Implementation

static Future<LocationPermissionStatus> requestLocationPermission() async {
  try {
    // Check if location services are enabled
    final isLocationServiceEnabled = await Geolocator.isLocationServiceEnabled();
    if (!isLocationServiceEnabled) {
      return LocationPermissionStatus.servicesDisabled;
    }

    // Check current permission status
    final permission = await Geolocator.checkPermission();

     if (permission == LocationPermission.denied) {
       // Request permission
       final newPermission = await Geolocator.requestPermission();

       if (newPermission == LocationPermission.whileInUse ||
           newPermission == LocationPermission.always) {
         return LocationPermissionStatus.granted;
       } else if (newPermission == LocationPermission.deniedForever) {
         return LocationPermissionStatus.deniedForever;
       } else {
         return LocationPermissionStatus.denied;
       }
     } else if (permission == LocationPermission.deniedForever) {
       return LocationPermissionStatus.deniedForever;
     } else if (permission == LocationPermission.whileInUse ||
         permission == LocationPermission.always) {
       return LocationPermissionStatus.granted;
     }

    return LocationPermissionStatus.denied;
  } catch (e) {
    print('Error requesting location permission: $e');
    return LocationPermissionStatus.error;
  }
}