fixed GPS issue

This commit is contained in:
Mohamed Nouffer
2023-09-06 00:22:02 +05:30
parent 3f157d7ddf
commit 0f3bf2c2c7
3 changed files with 55 additions and 14 deletions

View File

@ -52,6 +52,10 @@ class DestinationController extends GetxController {
List<String> gps = <String>["-- stating --"].obs;
List<String> locationPermission = <String>[" -- starting -- "].obs;
StreamSubscription<Position>? positionStream;
Timer? _GPStimer;
var travelMode = 0.obs;
bool skip_gps = false;
@ -324,7 +328,8 @@ class DestinationController extends GetxController {
db.deleteAllDestinations().then((value) {
PopulateDestinations();
initGPS();
startGPSTimer();
//initGPS();
});
// currentSelectedDestinations.forEach((element) {
@ -517,10 +522,10 @@ class DestinationController extends GetxController {
if (defaultTargetPlatform == TargetPlatform.android) {
locationSettings = AndroidSettings(
accuracy: LocationAccuracy.bestForNavigation,
distanceFilter: 0,
accuracy: LocationAccuracy.high,
distanceFilter: 1,
forceLocationManager: true,
intervalDuration: const Duration(seconds: 1),
intervalDuration: const Duration(seconds: 3),
//(Optional) Set foreground notification config to keep the app alive
//when going to the background
foregroundNotificationConfig: const ForegroundNotificationConfig(
@ -532,7 +537,7 @@ class DestinationController extends GetxController {
} else if (defaultTargetPlatform == TargetPlatform.iOS ||
defaultTargetPlatform == TargetPlatform.macOS) {
locationSettings = AppleSettings(
accuracy: LocationAccuracy.bestForNavigation,
accuracy: LocationAccuracy.high,
activityType: ActivityType.fitness,
distanceFilter: 0,
pauseLocationUpdatesAutomatically: false,
@ -546,8 +551,7 @@ class DestinationController extends GetxController {
}
try {
StreamSubscription<Position> positionStream =
Geolocator.getPositionStream(locationSettings: locationSettings)
positionStream = Geolocator.getPositionStream(locationSettings: locationSettings)
.listen((Position? position) {
current_lat = position != null ? position.latitude : 0;
current_lon = position != null ? position.longitude : 0;
@ -565,9 +569,9 @@ class DestinationController extends GetxController {
//String user_id = indexController.currentUser[0]["user"]["id"].toString();
//TrackingService.addTrack(user_id, position!.latitude, position.longitude).then((val){
//print("---- postion is ${position.latitude}, ${position.longitude}");
gps.clear();
gps.add(
"-- lat : ${position.latitude}, lon : ${position.longitude} --");
//gps.clear();
//gps.add(
// "-- lat : ${position.latitude}, lon : ${position.longitude} --");
checkForCheckin(position.latitude, position.longitude);
print("--- call check checkin");
print("---- skip gps is ${skip_gps.toString()} ----");
@ -583,10 +587,44 @@ class DestinationController extends GetxController {
ever(indexController.connectionStatusName, connectionChanged);
}
void startGPSTimer() {
// If a timer is already running, we first cancel it
_GPStimer?.cancel();
// Start a new timer that fires every 3 seconds
_timer = Timer.periodic(Duration(seconds: 3), (timer) async {
Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
if (is_gps_selected.value) {
double czoom = indexController.rogMapController.zoom;
indexController.rogMapController
.move(LatLng(position.latitude, position.longitude), czoom);
checkForCheckin(position.latitude, position.longitude);
print("--- call check checkin");
print("---- skip gps is ${skip_gps.toString()} ----");
}
});
}
void stopGPSTimer() {
_GPStimer?.cancel();
}
@override
void onClose() {
positionStream?.cancel();
_GPStimer?.cancel();
super.onClose();
super.onClose();
}
@override
void onInit() async {
initGPS();
//initGPS();
startGPSTimer();
super.onInit();
}