Closed shikha1992 closed 4 years ago
You need to await
these calls. All plugin methods run asynchronously. There's no way to predict which of these methods executes first.
bg.BackgroundGeolocation.start();
bg.BackgroundGeolocation.changePace(true);
bg.BackgroundGeolocation.registerHeadlessTask( backgroundGeolocationHeadlessTask);
Headless-task is an Android-only mechanism. It has nothing to do with iOS.
I suggest you test your app in the simulator with debug: true
, simulating location with Freeway Drive.
You need to
await
these calls. All plugin methods run asynchronously. There's no way to predict which of these methods executes first.bg.BackgroundGeolocation.start(); bg.BackgroundGeolocation.changePace(true);
bg.BackgroundGeolocation.registerHeadlessTask( backgroundGeolocationHeadlessTask);
Headless-task is an Android-only mechanism. It has nothing to do with iOS.
I suggest you test your app in the simulator with
debug: true
, simulating location with Freeway Drive.
So I am calling my update function inside headless task only. If it does not works for ios, then where should I call my update for ios?
right now I am using this function to get latitude and update at my server from headless method
case bg.Event.LOCATION:
When iOS detects the device is moving and your app is currently terminated, the OS will automatically relaunch your app in the background, just as if launched from the home-screen. All traditional plugin events will fire (eg: onLocation
, onMotionChange
, etc.
There's a reason this Wiki is called Android Headless Mode -- because Headless mode is Android only.
I am not using below method, for ios it means I have to use this?
bg.BackgroundGeolocation.onLocation((bg.Location location) { print('[location] - $location'); });
The onLocation
event is fired with each recorded location while both iOS & Android app is running in the foreground or background.
headless event is working fine but onlocationChange is not getting fire at background
but onlocationChange is not getting fire at background
There's no such event called onLocationChange
. It's called onLocation
but onlocationChange is not getting fire at background
There's no such event called
onLocationChange
. It's calledonLocation
My bad . I am talking about this method
bg.BackgroundGeolocation.onLocation((bg.Location location) {
What makes you think onLocation
is "not being called" in the background?
headless events are getting fired at background and I am able to see logs but not onLocation.
I do not see logs inside this method.
When at foreground its working okay. Can you please help what I might be missing here?
I do not have this problem.
void _onLocation(bg.Location location) {
print("[location] - $location");
}
$ adb logcat *:S flutter:V
07-27 11:30:42.881 32134 1611 I flutter : [location] - [Location {odometer: 108191.203125, activity: {confidence: 100, type: running}, extras: {}, event: motionchange, timestampMeta: {elapsedRealtime: 268416410, time: 1595863842730, systemTime: 1595863842807, systemClockElaspsedRealtime: 268416487}, battery: {level: 0.93, is_charging: true}, uuid: 29c102e6-8906-42b5-acd0-2ba943cb4ac8, coords: {altitude: 45.9, heading: 181.11, latitude: 45.5188987, accuracy: 25.2, speed: 0.1, longitude: -73.6005841}, is_moving: true, timestamp: 2020-07-27T15:30:42.730Z}]
Can you please help what I might be missing here?
No idea.
void main() async{
await SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown])
.then((_){
runApp(StoreProvider(
store: store, child: Application(store))
);
}
);
//start here
bg.BackgroundGeolocation.ready(bg.Config(
desiredAccuracy: bg.Config.DESIRED_ACCURACY_HIGH,
distanceFilter: 10.0,
stopOnTerminate: false,
startOnBoot: true,
allowIdenticalLocations: true,
notificationTitle: "Greenplay",
notificationText: "Fetching location",
debug: false,
enableHeadless: true,
foregroundService: true,
forceReloadOnMotionChange: true,
logLevel: bg.Config.LOG_LEVEL_VERBOSE,
fastestLocationUpdateInterval: 1,
isMoving: true,
// disableElasticity: true,
)).then((bg.State state) {
if (!state.enabled) {
if (PrefsSingleton.prefs.getString(PreferenceNames.token) != null) {
bg.BackgroundGeolocation.start();
bg.BackgroundGeolocation.changePace(true);
} else {
// bg.BackgroundGeolocation.stop();
}
}
});
//android
bg.BackgroundGeolocation.registerHeadlessTask(
backgroundGeolocationHeadlessTask);
//ios
bg.BackgroundGeolocation.onLocation((bg.Location location) {
print('[location] - $location');
var hh = GetDeviceType.getDeviceType();
print("hh:... $hh");
if (GetDeviceType.getDeviceType() == "ios") {
//do smoething
}
});
}
I/TSLocationManager(13809): [c.t.l.scheduler.ScheduleEvent onOneShot]
I/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): β β° OneShot event fired: TERMINATE_EVENT
I/TSLocationManager(13809): β βββββββββββββββββββββββββββββββββββββββββββββ
D/TSLocationManager(13809): [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
D/TSLocationManager(13809): [c.t.f.b.HeadlessTask onHeadlessEvent] π [HeadlessTask terminate]
D/TSLocationManager(13809): [c.t.f.b.HeadlessTask dispatch] [HeadlessTask] waiting for client to initialize
D/TSLocationManager(13809): [c.t.f.b.HeadlessTask onMethodCall] $ initialized
I/flutter (13809): π¬ --> [HeadlessEvent name: terminate, event: [State enabled: true, isMoving: true, trackingMode: 1, desiredAccuracy: -1, distanceFilter: 10.0, odometer: 39.54228591918945, schedulerEnabled: false, foregroundService: true]]
I/flutter (13809): π¬ --> terminate
I/flutter (13809): [getCurrentPosition] Headless: [HeadlessEvent name: terminate, event: [State enabled: true, isMoving: true, trackingMode: 1, desiredAccuracy: -1, distanceFilter: 10.0, odometer: 39.54228591918945, schedulerEnabled: false, foregroundService: true]]
I/TSLocationManager(13809): [c.t.l.s.ActivityRecognitionService a]
I/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): β Motion Transition Result
I/TSLocationManager(13809): β βββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): ββ π΄ EXIT: still
I/TSLocationManager(13809): ββ πΎ ENTER: walking
I/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
D/TSLocationManager(13809): [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
D/TSLocationManager(13809): [c.t.f.b.HeadlessTask onHeadlessEvent] π [HeadlessTask activitychange]
I/TSLocationManager(13809): [c.t.l.s.TSScheduleManager cancelOneShot]
I/TSLocationManager(13809): β° Cancel OneShot: STOP_TIMEOUT
I/flutter (13809): π¬ --> [HeadlessEvent name: activitychange, event: [ActivityChangeEvent walking (100%)]]
I/flutter (13809): π¬ --> activitychange
I/flutter (13809): [ActivityChangeEvent walking (100%)]
I/flutter (13809): act_change: [ActivityChangeEvent walking (100%)]
D/TSLocationManager(13809): [c.t.l.s.ActivityRecognitionService onDestroy]
D/TSLocationManager(13809): π΄ ActivityRecognitionService destroyed
I/TSLocationManager(13809): [c.t.l.s.ActivityRecognitionService a]
I/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): β Motion Transition Result
I/TSLocationManager(13809): β βββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): ββ π΄ EXIT: walking
I/TSLocationManager(13809): ββ πΎ ENTER: still
I/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
D/TSLocationManager(13809): [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
D/TSLocationManager(13809): [c.t.f.b.HeadlessTask onHeadlessEvent] π [HeadlessTask activitychange]
I/TSLocationManager(13809): [c.t.l.s.TSScheduleManager oneShot]
I/TSLocationManager(13809): β° Scheduled OneShot: STOP_TIMEOUT in 300000ms (jobID: 2059034116)
I/TSLocationManager(13809): [c.t.l.l.TSLocationManager removeLocationUpdates]
I/TSLocationManager(13809): π΄ Location-services: OFF
I/TSLocationManager(13809): [c.t.l.l.TSLocationManager requestLocationUpdates]
I/TSLocationManager(13809): πΎ Location-services: ON
D/TSLocationManager(13809): [c.t.l.adapter.TSConfig translateDesiredAccuracy] translateDesiredAccuracy (true): -1
I/flutter (13809): π¬ --> [HeadlessEvent name: activitychange, event: [ActivityChangeEvent still (100%)]]
I/flutter (13809): π¬ --> activitychange
I/flutter (13809): [ActivityChangeEvent still (100%)]
I/flutter (13809): act_change: [ActivityChangeEvent still (100%)]
D/TSLocationManager(13809): [c.t.l.s.ActivityRecognitionService onDestroy]
D/TSLocationManager(13809): π΄ ActivityRecognitionService destroyed
D/TSLocationManager(13809): [c.t.l.service.TrackingService b]
D/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
D/TSLocationManager(13809): β TrackingService: LocationResult
D/TSLocationManager(13809): β βββββββββββββββββββββββββββββββββββββββββββββ
D/TSLocationManager(13809): ββ π Location[fused 31******,77****** hAcc=5 et=+4d4h48m40s153ms alt=269.55430338997394 vel=4.3992934E-12 bear=180.0 vAcc=10 sAcc=??? bAcc=???], age: 198ms, time: 1595863785000
D/TSLocationManager(13809): [c.t.l.service.TrackingService b] Received stoppedAt location
I/TSLocationManager(13809): [c.t.l.service.TrackingService b]
I/TSLocationManager(13809): βΉοΈ Distance from stoppedAtLocation: -9.8
D/TSLocationManager(13809): [c.t.l.l.TSLocationManager onLocationResult]
D/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
D/TSLocationManager(13809): β Process LocationResult
D/TSLocationManager(13809): β βββββββββββββββββββββββββββββββββββββββββββββ
D/TSLocationManager(13809): [c.t.l.l.TSLocationManager locationIsInvalid] Distance from last location: 5.4094343, apparent speed: 0.02331311
D/TSLocationManager(13809): [c.t.l.l.TSLocationManager calculateMedianAccuracy] Median accuracy: 37.445
D/TSLocationManager(13809): [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
D/TSLocationManager(13809): [c.t.f.b.HeadlessTask onHeadlessEvent] π [HeadlessTask location]
I/TSLocationManager(13809): [c.t.l.data.sqlite.b persist]
I/TSLocationManager(13809): β
INSERT: 8ef3943f-e7d1-47b4-b27e-66aa91bf32ef
I/flutter (13809): π¬ --> [HeadlessEvent name: location, event: [Location {is_moving: true, uuid: 8ef3943f-e7d1-47b4-b27e-66aa91bf32ef, timestamp: 2020-07-27T15:29:45.000Z, odometer: 39.5, coords: {latitude: 30.7042127, longitude: 76.7081062, accuracy: 4.9, speed: 0, heading: 180, altitude: 269.6}, activity: {type: still, confidence: 100}, battery: {is_charging: true, level: 0.33}, extras: {}}]]
I/flutter (13809): π¬ --> location
I/flutter (13809): [Location {is_moving: true, uuid: 8ef3943f-e7d1-47b4-b27e-66aa91bf32ef, timestamp: 2020-07-27T15:29:45.000Z, odometer: 39.5, coords: {latitude: 30.7042127, longitude: 76.7081062, accuracy: 4.9, speed: 0, heading: 180, altitude: 269.6}, activity: {type: still, confidence: 100}, battery: {is_charging: true, level: 0.33}, extras: {}}]
I/zygote64(13809): Do full code cache collection, code=501KB, data=295KB
I/zygote64(13809): After code cache collection, code=468KB, data=251KB
I/TSLocationManager(13809): [c.t.l.scheduler.ScheduleEvent onOneShot]
I/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): β β° OneShot event fired: STOP_TIMEOUT
I/TSLocationManager(13809): β βββββββββββββββββββββββββββββββββββββββββββββ
D/TSLocationManager(13809): [c.t.l.adapter.TSConfig d] βΉοΈ Persist config, dirty: [isMoving]
I/TSLocationManager(13809): [c.t.l.l.TSLocationManager removeLocationUpdates]
I/TSLocationManager(13809): π΄ Location-services: OFF
I/TSLocationManager(13809): [c.t.l.service.HeartbeatService c]
I/TSLocationManager(13809): π΄ Stop heartbeat
D/TSLocationManager(13809): [c.t.locationmanager.util.b b]
D/TSLocationManager(13809): βΉοΈ LocationAuthorization: Permission granted
I/TSLocationManager(13809): [c.t.l.service.TrackingService a]
I/TSLocationManager(13809): π΅ setPace: true β false
I/TSLocationManager(13809): [c.t.l.s.LocationRequestService a]
I/TSLocationManager(13809): βΉοΈ Location availability: true
I/TSLocationManager(13809): [c.t.l.s.LocationRequestService b]
I/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): β motionchange LocationResult: 4
I/TSLocationManager(13809): β βββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): ββ π Location[fused 31******,77****** hAcc=5 et=+4d4h53m41s118ms alt=269.55430338997394 vel=7.613017E-17 bear=288.68527 vAcc=10 sAcc=??? bAcc=???], age: 148ms, time: 1595864086000
I/TSLocationManager(13809): [c.t.l.l.TSLocationManager onSingleLocationResult]
I/TSLocationManager(13809): π΅ Acquired motionchange position, isMoving: false
D/TSLocationManager(13809): [c.t.l.l.TSLocationManager calculateMedianAccuracy] Median accuracy: 37.445
D/TSLocationManager(13809): [c.t.l.s.LocationRequestService onDestroy]
D/TSLocationManager(13809): [c.t.l.s.LocationRequestService b] SingleLocationRequest 4 isFinished? true
D/TSLocationManager(13809): [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
D/TSLocationManager(13809): [c.t.f.b.HeadlessTask onHeadlessEvent] π [HeadlessTask location]
I/TSLocationManager(13809): [c.t.l.s.ActivityRecognitionService b]
I/TSLocationManager(13809): πΎ Start motion-activity updates
D/TSLocationManager(13809): [c.t.l.g.TSGeofenceManager startMonitoringStationaryRegion]
D/TSLocationManager(13809): πΎ Start monitoring stationary region (radius: 150.0m 30.7042127,76.7081062 hAcc=4.9)
I/TSLocationManager(13809): [c.t.l.data.sqlite.b persist]
I/TSLocationManager(13809): β
INSERT: 74f6c649-bd34-4a83-9a85-1729b4bbe934
D/TSLocationManager(13809): [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
D/TSLocationManager(13809): [c.t.f.b.HeadlessTask onHeadlessEvent] π [HeadlessTask motionchange]
I/flutter (13809): π¬ --> [HeadlessEvent name: location, event: [Location {event: motionchange, is_moving: false, uuid: 74f6c649-bd34-4a83-9a85-1729b4bbe934, timestamp: 2020-07-27T15:34:46.000Z, odometer: 39.5, coords: {latitude: 30.7042127, longitude: 76.7081062, accuracy: 4.9, speed: 0, heading: 288.69, altitude: 269.6}, activity: {type: still, confidence: 100}, battery: {is_charging: true, level: 0.33}, extras: {}}]]
I/flutter (13809): π¬ --> location
I/flutter (13809): [Location {event: motionchange, is_moving: false, uuid: 74f6c649-bd34-4a83-9a85-1729b4bbe934, timestamp: 2020-07-27T15:34:46.000Z, odometer: 39.5, coords: {latitude: 30.7042127, longitude: 76.7081062, accuracy: 4.9, speed: 0, heading: 288.69, altitude: 269.6}, activity: {type: still, confidence: 100}, battery: {is_charging: true, level: 0.33}, extras: {}}]
I/TSLocationManager(13809): [c.t.l.service.TrackingService i]
I/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): β TrackingService motionchange: false
I/TSLocationManager(13809): β βββββββββββββββββββββββββββββββββββββββββββββ
I/flutter (13809): π¬ --> [HeadlessEvent name: motionchange, event: [Location {event: motionchange, is_moving: false, uuid: 74f6c649-bd34-4a83-9a85-1729b4bbe934, timestamp: 2020-07-27T15:34:46.000Z, odometer: 39.5, coords: {latitude: 30.7042127, longitude: 76.7081062, accuracy: 4.9, speed: 0, heading: 288.69, altitude: 269.6}, activity: {type: still, confidence: 100}, battery: {is_charging: true, level: 0.33}, extras: {}}]]
I/TSLocationManager(13809): [c.t.l.s.TSScheduleManager cancelOneShot]
I/TSLocationManager(13809): β° Cancel OneShot: STOP_TIMEOUT
I/flutter (13809): π¬ --> motionchange
I/flutter (13809): [Location {event: motionchange, is_moving: false, uuid: 74f6c649-bd34-4a83-9a85-1729b4bbe934, timestamp: 2020-07-27T15:34:46.000Z, odometer: 39.5, coords: {latitude: 30.7042127, longitude: 76.7081062, accuracy: 4.9, speed: 0, heading: 288.69, altitude: 269.6}, activity: {type: still, confidence: 100}, battery: {is_charging: true, level: 0.33}, extras: {}}]
I/flutter (13809): aaaa111
D/TSLocationManager(13809): [c.t.l.service.TrackingService onDestroy]
D/TSLocationManager(13809): π΄ TrackingService destroyed
D/TSLocationManager(13809): [c.t.l.s.ActivityRecognitionService a]
D/TSLocationManager(13809): π οΈDetectedActivity [type=STILL, confidence=100]
I/TSLocationManager(13809): [c.t.l.s.ActivityRecognitionService a]
I/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): β Motion Transition Result
I/TSLocationManager(13809): β βββββββββββββββββββββββββββββββββββββββββββββ
I/TSLocationManager(13809): ββ πΎ ENTER: still
I/TSLocationManager(13809): ββββββββββββββββββββββββββββββββββββββββββββββ
D/TSLocationManager(13809): [c.t.l.a.BackgroundGeolocation isMainActivityActive] NO
D/TSLocationManager(13809): [c.t.f.b.HeadlessTask onHeadlessEvent] π [HeadlessTask activitychange]
I/flutter (13809): π¬ --> [HeadlessEvent name: activitychange, event: [ActivityChangeEvent still (100%)]]
I/flutter (13809): π¬ --> activitychange
I/flutter (13809): [ActivityChangeEvent still (100%)]
I/flutter (13809): act_change: [ActivityChangeEvent still (100%)]
D/TSLocationManager(13809): [c.t.l.s.ActivityRecognitionService onDestroy]
D/TSLocationManager(13809): π΄ ActivityRecognitionService destroyed
void main() async{ await SystemChrome.setPreferredOrientations( [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]) .then((_){ runApp(StoreProvider( store: store, child: Application(store)) ); } ); //start here bg.BackgroundGeolocation.ready(bg.Config( desiredAccuracy: bg.Config.DESIRED_ACCURACY_HIGH, distanceFilter: 10.0, stopOnTerminate: false, startOnBoot: true, allowIdenticalLocations: true, notificationTitle: "Greenplay", notificationText: "Fetching location", debug: false, enableHeadless: true, foregroundService: true, forceReloadOnMotionChange: true, logLevel: bg.Config.LOG_LEVEL_VERBOSE, fastestLocationUpdateInterval: 1, isMoving: true, // disableElasticity: true, )).then((bg.State state) { if (!state.enabled) { if (PrefsSingleton.prefs.getString(PreferenceNames.token) != null) { bg.BackgroundGeolocation.start(); bg.BackgroundGeolocation.changePace(true); } else { // bg.BackgroundGeolocation.stop(); } } }); //android bg.BackgroundGeolocation.registerHeadlessTask( backgroundGeolocationHeadlessTask); //ios bg.BackgroundGeolocation.onLocation((bg.Location location) { print('[location] - $location'); var hh = GetDeviceType.getDeviceType(); print("hh:... $hh"); if (GetDeviceType.getDeviceType() == "ios") { //do smoething } }); }
see this as well please
I/flutter (13809): π¬ --> [HeadlessEvent name: terminate, event
Why would you expect onLocation
event to fire when your app is terminated?
Also, all this code is supposed to exist within your Flutter Application, not in main.dart
:
//start here
bg.BackgroundGeolocation.ready(bg.Config(
desiredAccuracy: bg.Config.DESIRED_ACCURACY_HIGH,
distanceFilter: 10.0,
stopOnTerminate: false,
startOnBoot: true,
allowIdenticalLocations: true,
notificationTitle: "Greenplay",
notificationText: "Fetching location",
debug: false,
enableHeadless: true,
foregroundService: true,
forceReloadOnMotionChange: true,
logLevel: bg.Config.LOG_LEVEL_VERBOSE,
fastestLocationUpdateInterval: 1,
isMoving: true,
// disableElasticity: true,
)).then((bg.State state) {
if (!state.enabled) {
if (PrefsSingleton.prefs.getString(PreferenceNames.token) != null) {
bg.BackgroundGeolocation.start();
bg.BackgroundGeolocation.changePace(true);
} else {
// bg.BackgroundGeolocation.stop();
}
}
});
//ios
bg.BackgroundGeolocation.onLocation((bg.Location location) {
print('[location] - $location');
var hh = GetDeviceType.getDeviceType();
print("hh:... $hh");
if (GetDeviceType.getDeviceType() == "ios") {
//do smoething
}
});
}
I/flutter (13809): mailbox_with_mail --> [HeadlessEvent name: terminate, event
Why would you expect
onLocation
event to fire when your app is terminated?
but terminated is called when user clears it from background or exit fully from app. Can't we get location fetched after this?
Also, all this code is supposed to exist within your Flutter Application, not in
main.dart
://start here bg.BackgroundGeolocation.ready(bg.Config( desiredAccuracy: bg.Config.DESIRED_ACCURACY_HIGH, distanceFilter: 10.0, stopOnTerminate: false, startOnBoot: true, allowIdenticalLocations: true, notificationTitle: "Greenplay", notificationText: "Fetching location", debug: false, enableHeadless: true, foregroundService: true, forceReloadOnMotionChange: true, logLevel: bg.Config.LOG_LEVEL_VERBOSE, fastestLocationUpdateInterval: 1, isMoving: true, // disableElasticity: true, )).then((bg.State state) { if (!state.enabled) { if (PrefsSingleton.prefs.getString(PreferenceNames.token) != null) { bg.BackgroundGeolocation.start(); bg.BackgroundGeolocation.changePace(true); } else { // bg.BackgroundGeolocation.stop(); } } }); //ios bg.BackgroundGeolocation.onLocation((bg.Location location) { print('[location] - $location'); var hh = GetDeviceType.getDeviceType(); print("hh:... $hh"); if (GetDeviceType.getDeviceType() == "ios") { //do smoething } }); }
This was actually added first inside app. But did not work after termination(in android). So i keep it in main.dart and registered headless in same only and it worked
When I press back button and exit app, "terminated" event is called in which android is working fine for headless but onLocation used for ios stops. What can be look around? Please help me with this, as this is the only part which is left before release of my app.
Read api docs Config.stopOnTerminate
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. You may also mark this issue as a "discussion" and I will leave this open.
Closing this issue after a prolonged period of inactivity. Fell free to reopen this issue, if this still affecting you.
Your Environment
flutter doctor
):info.plist
Expected Behavior
Actual Behavior
Steps to Reproduce
1. 2. 3. 4.
Context
Debug logs
Logs
``` PASTE_YOUR_LOGS_HERE ```