Default to moving state

This commit is contained in:
Anton Tananaev 2025-07-05 09:35:58 -07:00
parent 1b11c708f8
commit 1b46a4e8b8
3 changed files with 14 additions and 8 deletions

View file

@ -16,8 +16,10 @@ class GeolocationService {
}
bg.BackgroundGeolocation.onEnabledChange(onEnabledChange);
bg.BackgroundGeolocation.onMotionChange(onMotionChange);
bg.BackgroundGeolocation.onLocation(onLocation);
bg.BackgroundGeolocation.onHeartbeat(onHeartbeat);
bg.BackgroundGeolocation.onLocation(onLocation, (bg.LocationError error) {
developer.log('Location error', error: error);
});
}
static Future<void> onEnabledChange(bool enabled) async {
@ -38,6 +40,10 @@ class GeolocationService {
}
}
static Future<void> onHeartbeat(bg.HeartbeatEvent event) async {
await bg.BackgroundGeolocation.getCurrentPosition(samples: 1, persist: true, extras: {'heartbeat': true});
}
static Future<void> onLocation(bg.Location location) async {
if (_shouldDelete(location)) {
await bg.BackgroundGeolocation.destroyLocation(location.uuid);
@ -51,10 +57,6 @@ class GeolocationService {
}
}
static Future<void> onHeartbeat(bg.HeartbeatEvent event) async {
await bg.BackgroundGeolocation.getCurrentPosition(samples: 1, persist: true, extras: {'heartbeat': true});
}
static bool _shouldDelete(bg.Location location) {
if (!location.isMoving) return false;
if (location.extras?.isNotEmpty == true) return false;
@ -113,11 +115,11 @@ void headlessTask(bg.HeadlessEvent headlessEvent) async {
case bg.Event.MOTIONCHANGE:
await GeolocationService.onMotionChange(headlessEvent.event);
break;
case bg.Event.LOCATION:
await GeolocationService.onLocation(headlessEvent.event);
break;
case bg.Event.HEARTBEAT:
await GeolocationService.onHeartbeat(headlessEvent.event);
break;
case bg.Event.LOCATION:
await GeolocationService.onLocation(headlessEvent.event);
break;
}
}