35 LocationPermission permission;
37 serviceEnabled = await Geolocator.isLocationServiceEnabled();
38 if (!serviceEnabled) {
42 permission = await Geolocator.checkPermission();
43 if (permission == LocationPermission.denied) {
44 permission = await Geolocator.requestPermission();
45 if (permission == LocationPermission.denied) {
50 if (permission == LocationPermission.deniedForever) {
54 LocationSettings locationSettings = LocationSettings(
55 accuracy: LocationAccuracy.high,
59 if (defaultTargetPlatform == TargetPlatform.android) {
60 locationSettings = AndroidSettings(
61 accuracy: LocationAccuracy.high,
63 forceLocationManager:
true,
64 intervalDuration:
const Duration(seconds: 30),
65 foregroundNotificationConfig:
const ForegroundNotificationConfig(
66 notificationText:
"Driver app is tracking your location in the background",
67 notificationTitle:
"Background tracking",
71 }
else if (defaultTargetPlatform == TargetPlatform.iOS) {
72 locationSettings = AppleSettings(
73 pauseLocationUpdatesAutomatically:
false,
74 accuracy: LocationAccuracy.high,
75 activityType: ActivityType.automotiveNavigation,
76 allowBackgroundLocationUpdates:
true,
78 showBackgroundLocationIndicator:
true,
84 _positionStream = Geolocator.getPositionStream(locationSettings: locationSettings).listen(
85 (Position? position) {
86 if (position != null) {
87 if (defaultTargetPlatform == TargetPlatform.iOS) {
88 if (locationTimer == null || !locationTimer!.isActive) {
93 latitude: position.latitude,
94 longitude: position.longitude,
97 locationTimer = Timer(
const Duration(seconds: 30), () {
106 latitude: position.latitude,
107 longitude: position.longitude,