fetchCurrentLocation static method
Future<LatLng?>
fetchCurrentLocation(
)
Implementation
static Future<LatLng?> fetchCurrentLocation() async {
/// get current location
if (!(await permissionUtils.getLocationPermission())) {
debugPrint("------> Permission denied ");
bool isPermanentlyDenied = await Permission.location.isPermanentlyDenied;
bool? isLocationEnabled = await Permission.locationWhenInUse.serviceStatus.isEnabled;
if(isPermanentlyDenied) {
await picker.permissionDeniedDialogue();
return null;
} else if(!isLocationEnabled){
debugPrint("------> Location service denied ");
bool locationEnabled = await loc.Location().requestService();
if(!locationEnabled) {
bool? locEnabled = await Permission.locationWhenInUse.serviceStatus.isEnabled;
if(!locEnabled) {
return null;
}
}
}
return null;
} else {
bool? isLocationEnabled = await Permission.locationWhenInUse.serviceStatus.isEnabled;
if(!isLocationEnabled) {
debugPrint("------> Location service denied ");
bool locationEnabled = await loc.Location().requestService();
if(!locationEnabled) {
bool? locEnabled = await Permission.locationWhenInUse.serviceStatus.isEnabled;
if(!locEnabled) {
return null;
}
}
}
}
try {
Position? position = await Geolocator.getLastKnownPosition(
forceAndroidLocationManager: true,
);
position ??= await Geolocator.getCurrentPosition(
locationSettings: const LocationSettings(
accuracy: LocationAccuracy.high, // Choose appropriate accuracy
distanceFilter: 10,
),
);
return LatLng(position.latitude, position.longitude);
} catch (e) {
debugPrint(e.toString());
handleError(e);
return null;
}
}