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;
}
}