From 29eb5fe80d645d955dac6e381d30bad4ae1ea506 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Thu, 19 Aug 2021 10:19:32 -0700 Subject: [PATCH 1/6] remove ignore --- .../io/flutter/plugins/googlemapsexample/GoogleMapsTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemapsexample/GoogleMapsTest.java b/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemapsexample/GoogleMapsTest.java index 43ddeaae1579..40552ddf7be1 100644 --- a/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemapsexample/GoogleMapsTest.java +++ b/packages/google_maps_flutter/google_maps_flutter/example/android/app/src/androidTest/java/io/flutter/plugins/googlemapsexample/GoogleMapsTest.java @@ -8,11 +8,9 @@ import androidx.test.core.app.ActivityScenario; import io.flutter.plugins.googlemaps.GoogleMapsPlugin; -import org.junit.Ignore; import org.junit.Test; public class GoogleMapsTest { - @Ignore("Currently failing: https://github.com/flutter/flutter/issues/87566") @Test public void googleMapsPluginIsAdded() { final ActivityScenario scenario = From 0e5538e36905a0c1b3a3407eeec804b09a2661db Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Thu, 19 Aug 2021 10:45:57 -0700 Subject: [PATCH 2/6] dont set listeners to null if google maps was never ready --- .../io/flutter/plugins/googlemaps/GoogleMapController.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java index 05e016c32e27..7902e337b843 100644 --- a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java +++ b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java @@ -508,6 +508,10 @@ public void dispose() { } private void setGoogleMapListener(@Nullable GoogleMapListener listener) { + if (disposed && googleMap == null) { + Log.v(TAG, "Controller was disposed before maps was ready."); + return; + } googleMap.setOnCameraMoveStartedListener(listener); googleMap.setOnCameraMoveListener(listener); googleMap.setOnCameraIdleListener(listener); From a1fcb2800a154c7aa8786cd2852b70112a81c441 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Thu, 19 Aug 2021 10:47:20 -0700 Subject: [PATCH 3/6] add nullable annotation --- .../java/io/flutter/plugins/googlemaps/GoogleMapController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java index 7902e337b843..ccd332c4ea29 100644 --- a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java +++ b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java @@ -59,7 +59,7 @@ final class GoogleMapController private final MethodChannel methodChannel; private final GoogleMapOptions options; @Nullable private MapView mapView; - private GoogleMap googleMap; + @Nullable private GoogleMap googleMap; private boolean trackCameraPosition = false; private boolean myLocationEnabled = false; private boolean myLocationButtonEnabled = false; From 164a876ab5acc5d8b07bfa90412f98d354a224e5 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Thu, 19 Aug 2021 12:34:23 -0700 Subject: [PATCH 4/6] fix log --- .../java/io/flutter/plugins/googlemaps/GoogleMapController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java index ccd332c4ea29..3be69a13d8e4 100644 --- a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java +++ b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java @@ -509,7 +509,7 @@ public void dispose() { private void setGoogleMapListener(@Nullable GoogleMapListener listener) { if (disposed && googleMap == null) { - Log.v(TAG, "Controller was disposed before maps was ready."); + Log.v(TAG, "Controller was disposed before GoogleMap was ready."); return; } googleMap.setOnCameraMoveStartedListener(listener); From 30dc95f1cb608ebf7ec7244e866324fb771a7c20 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Thu, 19 Aug 2021 12:38:46 -0700 Subject: [PATCH 5/6] remove disposed --- .../java/io/flutter/plugins/googlemaps/GoogleMapController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java index 3be69a13d8e4..056e10631011 100644 --- a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java +++ b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java @@ -508,7 +508,7 @@ public void dispose() { } private void setGoogleMapListener(@Nullable GoogleMapListener listener) { - if (disposed && googleMap == null) { + if (googleMap == null) { Log.v(TAG, "Controller was disposed before GoogleMap was ready."); return; } From 049d121b6c577ba8bd334b42b33d522f27359867 Mon Sep 17 00:00:00 2001 From: Maurice Parrish Date: Tue, 14 Sep 2021 11:07:24 -0700 Subject: [PATCH 6/6] version bump --- packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md | 4 ++++ packages/google_maps_flutter/google_maps_flutter/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md index 3080d4a2d733..709aa3b90c19 100644 --- a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.9 + +* Fix Android `NullPointerException` caused by the `GoogleMapController` being disposed before `GoogleMap` was ready. + ## 2.0.8 * Mark iOS arm64 simulators as unsupported. diff --git a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml index f1dc21ae2600..9929eb935df1 100644 --- a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml +++ b/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml @@ -2,7 +2,7 @@ name: google_maps_flutter description: A Flutter plugin for integrating Google Maps in iOS and Android applications. repository: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter/google_maps_flutter issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22 -version: 2.0.8 +version: 2.0.9 environment: sdk: '>=2.12.0 <3.0.0'