-
Notifications
You must be signed in to change notification settings - Fork 38
Closed
Labels
priority: p0Highest priority. Critical issue. P0 implies highest priority.Highest priority. Critical issue. P0 implies highest priority.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Description
Environment details
- flutter_foreground_task: ^8.17.0
- google_navigation_flutter: ^0.4.0
- Flutter SDK's 3.29 (latest)
Steps to reproduce
Entry app initialize foreground then terminated the apps
Code example
- flutter foreground code
void intialize() {
FlutterForegroundTask.init();
await FlutterForegroundTask.startService();
}
- google navigation flutter code
(implementation in another screen)
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_navigation_flutter/google_navigation_flutter.dart';
class NavigationSample extends StatefulWidget {
const NavigationSample({super.key});
@override
State<NavigationSample> createState() => _NavigationSampleState();
}
class _NavigationSampleState extends State<NavigationSample> {
GoogleNavigationViewController? _navigationViewController;
bool _navigationSessionInitialized = false;
@override
void initState() {
super.initState();
_initializeNavigationSession();
}
Future<void> _initializeNavigationSession() async {
print('_initializeNavigationSession:${GoogleMapsNavigator.simulator}');
if (!await GoogleMapsNavigator.areTermsAccepted()) {
await GoogleMapsNavigator.showTermsAndConditionsDialog(
'Example title',
'Example company',
);
}
// Note: make sure user has also granted location permissions before starting navigation session.
await GoogleMapsNavigator.initializeNavigationSession();
setState(() {
_navigationSessionInitialized = true;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Google Maps Navigation Sample1')),
body: _navigationSessionInitialized
? GoogleMapsNavigationView(
onViewCreated: _onViewCreated,
initialNavigationUIEnabledPreference: NavigationUIEnabledPreference.disabled,
// Other view initialization settings
)
: const Center(child: CircularProgressIndicator()),
);
}
void _onViewCreated(GoogleNavigationViewController controller) {
_navigationViewController = controller;
controller.setMyLocationEnabled(true);
// Additional setup can be added here.
}
@override
void dispose() {
if (_navigationSessionInitialized) {
GoogleMapsNavigator.cleanup();
}
super.dispose();
}
}
Stack trace
D/SessionLifecycleClient(20186): Data Collection is disabled for all subscribers. Skipping this Event
D/AndroidRuntime(20186): Shutting down VM
E/AndroidRuntime(20186): FATAL EXCEPTION: main
E/AndroidRuntime(20186): Process: com.dash.driver.android.stg, PID: 20186
E/AndroidRuntime(20186): java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
E/AndroidRuntime(20186): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:562)
E/AndroidRuntime(20186): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
E/AndroidRuntime(20186): Caused by: java.lang.reflect.InvocationTargetException
E/AndroidRuntime(20186): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(20186): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
E/AndroidRuntime(20186): ... 1 more
E/AndroidRuntime(20186): Caused by: com.google.maps.flutter.navigation.FlutterError: Cannot access navigation functionality before the navigation session has been initialized.
E/AndroidRuntime(20186): at com.google.maps.flutter.navigation.GoogleMapsNavigationSessionManager.getNavigator(GoogleMapsNavigationSessionManager.kt:151)
E/AndroidRuntime(20186): at com.google.maps.flutter.navigation.GoogleMapsNavigationSessionManager.unregisterListeners(GoogleMapsNavigationSessionManager.kt:285)
E/AndroidRuntime(20186): at com.google.maps.flutter.navigation.GoogleMapsNavigationSessionManager.onActivityDestroyed(GoogleMapsNavigationSessionManager.kt:139)
E/AndroidRuntime(20186): at com.google.maps.flutter.navigation.GoogleMapsNavigationPlugin.onDetachedFromActivity(GoogleMapsNavigationPlugin.kt:77)
E/AndroidRuntime(20186): at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.detachFromActivity(FlutterEngineConnectionRegistry.java:381)
E/AndroidRuntime(20186): at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onDetach(FlutterActivityAndFragmentDelegate.java:754)
E/AndroidRuntime(20186): at io.flutter.embedding.android.FlutterActivity.onDestroy(FlutterActivity.java:909)
E/AndroidRuntime(20186): at android.app.Activity.performDestroy(Activity.java:8876)
E/AndroidRuntime(20186): at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1491)
E/AndroidRuntime(20186): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5600)
E/AndroidRuntime(20186): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5645)
E/AndroidRuntime(20186): at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:47)
E/AndroidRuntime(20186): at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
E/AndroidRuntime(20186): at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:180)
E/AndroidRuntime(20186): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98)
E/AndroidRuntime(20186): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
E/AndroidRuntime(20186): at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(20186): at android.os.Looper.loopOnce(Looper.java:205)
E/AndroidRuntime(20186): at android.os.Looper.loop(Looper.java:294)
E/AndroidRuntime(20186): at android.app.ActivityThread.main(ActivityThread.java:8177)
E/AndroidRuntime(20186): ... 3 more
I/Process (20186): Sending signal. PID: 20186 SIG: 9
Lost connection to device.
Thanks!
Metadata
Metadata
Assignees
Labels
priority: p0Highest priority. Critical issue. P0 implies highest priority.Highest priority. Critical issue. P0 implies highest priority.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.Error or flaw in code with unintended results or allowing sub-optimal usage patterns.