requestLocationPermission static method
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;
}
}