[google_maps_flutter] Fixes toggling traffic layer not working on Android (#2497)
diff --git a/packages/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/CHANGELOG.md
index 75a5832..be723ec 100644
--- a/packages/google_maps_flutter/CHANGELOG.md
+++ b/packages/google_maps_flutter/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.5.22+1
+
+* Fix for toggling traffic layer on Android not working
+
## 0.5.22
* Support Android v2 embedding.
diff --git a/packages/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java b/packages/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java
index c7c02bd..154515f 100644
--- a/packages/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java
+++ b/packages/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java
@@ -830,6 +830,10 @@
public void setTrafficEnabled(boolean trafficEnabled) {
this.trafficEnabled = trafficEnabled;
+ if (googleMap == null) {
+ return;
+ }
+ googleMap.setTrafficEnabled(trafficEnabled);
}
public void setBuildingsEnabled(boolean buildingsEnabled) {
diff --git a/packages/google_maps_flutter/example/lib/map_ui.dart b/packages/google_maps_flutter/example/lib/map_ui.dart
index 2a84e71..788af8b 100644
--- a/packages/google_maps_flutter/example/lib/map_ui.dart
+++ b/packages/google_maps_flutter/example/lib/map_ui.dart
@@ -53,6 +53,7 @@
bool _zoomGesturesEnabled = true;
bool _indoorViewEnabled = true;
bool _myLocationEnabled = true;
+ bool _myTrafficEnabled = false;
bool _myLocationButtonEnabled = true;
GoogleMapController _controller;
bool _nightMode = false;
@@ -213,6 +214,17 @@
);
}
+ Widget _myTrafficToggler() {
+ return FlatButton(
+ child: Text('${_myTrafficEnabled ? 'disable' : 'enable'} my traffic'),
+ onPressed: () {
+ setState(() {
+ _myTrafficEnabled = !_myTrafficEnabled;
+ });
+ },
+ );
+ }
+
Future<String> _getFileData(String path) async {
return await rootBundle.loadString(path);
}
@@ -260,6 +272,7 @@
indoorViewEnabled: _indoorViewEnabled,
myLocationEnabled: _myLocationEnabled,
myLocationButtonEnabled: _myLocationButtonEnabled,
+ trafficEnabled: _myTrafficEnabled,
onCameraMove: _updateCameraPosition,
);
@@ -300,6 +313,7 @@
_indoorViewToggler(),
_myLocationToggler(),
_myLocationButtonToggler(),
+ _myTrafficToggler(),
_nightModeToggler(),
],
),
diff --git a/packages/google_maps_flutter/example/test_driver/google_maps_e2e.dart b/packages/google_maps_flutter/example/test_driver/google_maps_e2e.dart
index 1b1c086..474f605 100644
--- a/packages/google_maps_flutter/example/test_driver/google_maps_e2e.dart
+++ b/packages/google_maps_flutter/example/test_driver/google_maps_e2e.dart
@@ -434,8 +434,23 @@
));
final GoogleMapInspector inspector = await inspectorCompleter.future;
- final bool isTrafficEnabled = await inspector.isTrafficEnabled();
+ bool isTrafficEnabled = await inspector.isTrafficEnabled();
expect(isTrafficEnabled, true);
+
+ await tester.pumpWidget(Directionality(
+ textDirection: TextDirection.ltr,
+ child: GoogleMap(
+ key: key,
+ initialCameraPosition: _kInitialCameraPosition,
+ trafficEnabled: false,
+ onMapCreated: (GoogleMapController controller) {
+ fail("OnMapCreated should get called only once.");
+ },
+ ),
+ ));
+
+ isTrafficEnabled = await inspector.isTrafficEnabled();
+ expect(isTrafficEnabled, false);
});
testWidgets('testBuildings', (WidgetTester tester) async {
diff --git a/packages/google_maps_flutter/pubspec.yaml b/packages/google_maps_flutter/pubspec.yaml
index b2ea9a1..61e27c9 100644
--- a/packages/google_maps_flutter/pubspec.yaml
+++ b/packages/google_maps_flutter/pubspec.yaml
@@ -1,7 +1,7 @@
name: google_maps_flutter
description: A Flutter plugin for integrating Google Maps in iOS and Android applications.
homepage: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter
-version: 0.5.22
+version: 0.5.22+1
dependencies:
flutter: