getCurrentLocationFromGeoLocator static method
Future<LatLng>
getCurrentLocationFromGeoLocator(
{ - LocationAccuracy desiredAccuracy = geo.LocationAccuracy.low,
- bool isAllowApproximate = false,
- bool dontShowMsg = false,
})
Implementation
static Future<LatLng> getCurrentLocationFromGeoLocator({
geo.LocationAccuracy desiredAccuracy = geo.LocationAccuracy.low,
bool isAllowApproximate = false,
bool dontShowMsg = false,
}) async {
final Localization localization = Localization.getInstance();
var latitude = 0.0; // to check whether precise location granted or not
var longitude = 0.0;
try {
Location location = Location();
bool serviceEnabled;
PermissionStatus permissionGranted;
serviceEnabled = await location.serviceEnabled();
if (!serviceEnabled) {
serviceEnabled = await location.requestService();
if (!serviceEnabled && !dontShowMsg) {
Get.showSnackbar(
GetSnackBar(
isDismissible: false,
title: localization.translate("locationServiceDisabled"),
message: localization.translate("locationServiceDisabledMsg"),
duration: const Duration(seconds: 5),
mainButton: TextButton(
onPressed: () {
perm.openAppSettings();
},
child: Text(localization.translate("openSettings")),
),
),
);
return LatLng(latitude, longitude);
}
}
permissionGranted = await location.hasPermission();
ConditionalLogs().customLog("Service ->>> $permissionGranted");
if (permissionGranted == PermissionStatus.denied) {
permissionGranted = await location.requestPermission();
if (permissionGranted != PermissionStatus.granted && !dontShowMsg) {
Get.showSnackbar(
GetSnackBar(
title: localization.translate("permissionDenied"),
message: localization.translate("locationEnableMsg"),
duration: const Duration(seconds: 5),
mainButton: TextButton(
onPressed: () {
perm.openAppSettings();
},
child: Text(localization.translate("openSettings")),
),
),
);
return LatLng(latitude, longitude);
}
}
var accuracy = await geo.Geolocator.getLocationAccuracy();
if (accuracy == geo.LocationAccuracyStatus.precise) {
var position = await geo.Geolocator.getCurrentPosition(
desiredAccuracy: desiredAccuracy);
latitude = position.latitude;
longitude = position.longitude;
}
ConditionalLogs().customLog("Current lat lang:$latitude $longitude");
if (accuracy != geo.LocationAccuracyStatus.precise) {
if (isAllowApproximate) {
var position = await geo.Geolocator.getLastKnownPosition();
if (position != null) {
latitude = position.latitude;
longitude = position.longitude;
}
}
ConditionalLogs()
.customLog("Last known lat lang:$latitude $longitude");
if (!dontShowMsg) {
Get.showSnackbar(
GetSnackBar(
title: localization.translate('currentLocationError'),
message: localization.translate('preciseLocationError'),
duration: const Duration(seconds: 5),
),
);
}
}
return LatLng(latitude, longitude);
} catch (error) {
ConditionalLogs()
.customLog("error catch getCurrentLocationFromGeoLocator");
ConditionalLogs().customLog("error : $error");
if (!dontShowMsg) {
Get.showSnackbar(
GetSnackBar(
title: localization.translate('error'),
message: "$error", //localization.translate('technicalErrorMsg'),
duration: const Duration(seconds: 5),
),
);
}
return LatLng(latitude, longitude);
}
}