|
23 | 23 | import android.util.Log; |
24 | 24 | import android.view.View; |
25 | 25 | import androidx.annotation.NonNull; |
| 26 | +import androidx.annotation.Nullable; |
26 | 27 | import androidx.lifecycle.DefaultLifecycleObserver; |
27 | 28 | import androidx.lifecycle.Lifecycle; |
28 | 29 | import androidx.lifecycle.LifecycleOwner; |
@@ -59,20 +60,10 @@ final class GoogleMapController |
59 | 60 | implements Application.ActivityLifecycleCallbacks, |
60 | 61 | DefaultLifecycleObserver, |
61 | 62 | ActivityPluginBinding.OnSaveInstanceStateListener, |
62 | | - GoogleMap.OnCameraIdleListener, |
63 | | - GoogleMap.OnCameraMoveListener, |
64 | | - GoogleMap.OnCameraMoveStartedListener, |
65 | | - GoogleMap.OnInfoWindowClickListener, |
66 | | - GoogleMap.OnMarkerClickListener, |
67 | | - GoogleMap.OnPolygonClickListener, |
68 | | - GoogleMap.OnPolylineClickListener, |
69 | | - GoogleMap.OnCircleClickListener, |
70 | 63 | GoogleMapOptionsSink, |
71 | 64 | MethodChannel.MethodCallHandler, |
72 | 65 | OnMapReadyCallback, |
73 | | - GoogleMap.OnMapClickListener, |
74 | | - GoogleMap.OnMapLongClickListener, |
75 | | - GoogleMap.OnMarkerDragListener, |
| 66 | + GoogleMapListener, |
76 | 67 | PlatformView { |
77 | 68 |
|
78 | 69 | private static final String TAG = "GoogleMapController"; |
@@ -204,16 +195,7 @@ public void onMapReady(GoogleMap googleMap) { |
204 | 195 | mapReadyResult.success(null); |
205 | 196 | mapReadyResult = null; |
206 | 197 | } |
207 | | - googleMap.setOnCameraMoveStartedListener(this); |
208 | | - googleMap.setOnCameraMoveListener(this); |
209 | | - googleMap.setOnCameraIdleListener(this); |
210 | | - googleMap.setOnMarkerClickListener(this); |
211 | | - googleMap.setOnMarkerDragListener(this); |
212 | | - googleMap.setOnPolygonClickListener(this); |
213 | | - googleMap.setOnPolylineClickListener(this); |
214 | | - googleMap.setOnCircleClickListener(this); |
215 | | - googleMap.setOnMapClickListener(this); |
216 | | - googleMap.setOnMapLongClickListener(this); |
| 198 | + setGoogleMapListener(this); |
217 | 199 | updateMyLocationSettings(); |
218 | 200 | markersController.setGoogleMap(googleMap); |
219 | 201 | polygonsController.setGoogleMap(googleMap); |
@@ -544,10 +526,23 @@ public void dispose() { |
544 | 526 | } |
545 | 527 | disposed = true; |
546 | 528 | methodChannel.setMethodCallHandler(null); |
547 | | - mapView.onDestroy(); |
| 529 | + setGoogleMapListener(null); |
548 | 530 | getApplication().unregisterActivityLifecycleCallbacks(this); |
549 | 531 | } |
550 | 532 |
|
| 533 | + private void setGoogleMapListener(@Nullable GoogleMapListener listener) { |
| 534 | + googleMap.setOnCameraMoveStartedListener(listener); |
| 535 | + googleMap.setOnCameraMoveListener(listener); |
| 536 | + googleMap.setOnCameraIdleListener(listener); |
| 537 | + googleMap.setOnMarkerClickListener(listener); |
| 538 | + googleMap.setOnMarkerDragListener(listener); |
| 539 | + googleMap.setOnPolygonClickListener(listener); |
| 540 | + googleMap.setOnPolylineClickListener(listener); |
| 541 | + googleMap.setOnCircleClickListener(listener); |
| 542 | + googleMap.setOnMapClickListener(listener); |
| 543 | + googleMap.setOnMapLongClickListener(listener); |
| 544 | + } |
| 545 | + |
551 | 546 | // @Override |
552 | 547 | // The minimum supported version of Flutter doesn't have this method on the PlatformView interface, but the maximum |
553 | 548 | // does. This will override it when available even with the annotation commented out. |
@@ -899,3 +894,16 @@ public void setBuildingsEnabled(boolean buildingsEnabled) { |
899 | 894 | this.buildingsEnabled = buildingsEnabled; |
900 | 895 | } |
901 | 896 | } |
| 897 | + |
| 898 | +interface GoogleMapListener |
| 899 | + extends GoogleMap.OnCameraIdleListener, |
| 900 | + GoogleMap.OnCameraMoveListener, |
| 901 | + GoogleMap.OnCameraMoveStartedListener, |
| 902 | + GoogleMap.OnInfoWindowClickListener, |
| 903 | + GoogleMap.OnMarkerClickListener, |
| 904 | + GoogleMap.OnPolygonClickListener, |
| 905 | + GoogleMap.OnPolylineClickListener, |
| 906 | + GoogleMap.OnCircleClickListener, |
| 907 | + GoogleMap.OnMapClickListener, |
| 908 | + GoogleMap.OnMapLongClickListener, |
| 909 | + GoogleMap.OnMarkerDragListener {} |
0 commit comments