1616
1717package com.google.maps.flutter.navigation
1818
19+ import android.app.Application
1920import androidx.lifecycle.Lifecycle
2021import io.flutter.embedding.engine.plugins.FlutterPlugin
2122import io.flutter.embedding.engine.plugins.activity.ActivityAware
@@ -40,14 +41,15 @@ class GoogleMapsNavigationPlugin : FlutterPlugin, ActivityAware {
4041 private var viewMessageHandler: GoogleMapsViewMessageHandler ? = null
4142 private var imageRegistryMessageHandler: GoogleMapsImageRegistryMessageHandler ? = null
4243 private var autoViewMessageHandler: GoogleMapsAutoViewMessageHandler ? = null
43-
44+
4445 // Instance-level session manager instead of singleton
4546 internal var sessionManager: GoogleMapsNavigationSessionManager ? = null
4647
4748 private var lifecycle: Lifecycle ? = null
4849
4950 override fun onAttachedToEngine (binding : FlutterPlugin .FlutterPluginBinding ) {
50- // Store first instance of the plugin so that Android Auto will get access to the correct object instances.
51+ // Store first instance of the plugin so that Android Auto will get access to the correct object
52+ // instances.
5153 if (instance == null ) {
5254 instance = this
5355 }
@@ -68,19 +70,20 @@ class GoogleMapsNavigationPlugin : FlutterPlugin, ActivityAware {
6870 AutoMapViewApi .setUp(binding.binaryMessenger, autoViewMessageHandler)
6971 autoViewEventApi = AutoViewEventApi (binding.binaryMessenger)
7072
71- // Setup navigation session manager (instance-level, not singleton)
73+ // Setup navigation session manager
74+ val app = binding.applicationContext as Application
7275 val navigationSessionEventApi = NavigationSessionEventApi (binding.binaryMessenger)
73- sessionManager = GoogleMapsNavigationSessionManager (navigationSessionEventApi)
76+ sessionManager = GoogleMapsNavigationSessionManager (navigationSessionEventApi, app )
7477
7578 // Setup platform view factory and its method channel handlers
7679 viewEventApi = ViewEventApi (binding.binaryMessenger)
7780 val factory = GoogleMapsViewFactory (viewRegistry!! , viewEventApi!! , imageRegistry!! )
7881 binding.platformViewRegistry.registerViewFactory(" google_navigation_flutter" , factory)
79-
82+
8083 // Setup navigation session message handler with this instance's session manager
8184 val sessionMessageHandler = GoogleMapsNavigationSessionMessageHandler (sessionManager!! )
8285 NavigationSessionApi .setUp(binding.binaryMessenger, sessionMessageHandler)
83-
86+
8487 val inspectorHandler = GoogleMapsNavigationInspectorHandler (viewRegistry!! )
8588 NavigationInspector .setUp(binding.binaryMessenger, inspectorHandler)
8689 }
0 commit comments