Skip to content

Commit 528399c

Browse files
stuartmorgan-gmauricioluz
authored andcommitted
[google_maps_flutter] Switch to using new structured options interface methods (flutter#5825)
1 parent 5b79dd3 commit 528399c

File tree

5 files changed

+38
-111
lines changed

5 files changed

+38
-111
lines changed

packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
## NEXT
1+
## 2.1.8
22

3+
* Switches to new platform interface versions of `buildView` and
4+
`updateOptions`.
35
* Ignores unnecessary import warnings in preparation for [upcoming Flutter changes](https://github.com/flutter/flutter/pull/104231).
46

57
## 2.1.7

packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,9 @@ class GoogleMapController {
106106
/// platform side.
107107
///
108108
/// The returned [Future] completes after listeners have been notified.
109-
Future<void> _updateMapOptions(Map<String, dynamic> optionsUpdate) {
110-
assert(optionsUpdate != null);
109+
Future<void> _updateMapConfiguration(MapConfiguration update) {
111110
return GoogleMapsFlutterPlatform.instance
112-
.updateMapOptions(optionsUpdate, mapId: mapId);
111+
.updateMapConfiguration(update, mapId: mapId);
113112
}
114113

115114
/// Updates marker configuration.

packages/google_maps_flutter/google_maps_flutter/lib/src/google_map.dart

Lines changed: 29 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ class _GoogleMapState extends State<GoogleMap> {
304304

305305
@override
306306
Widget build(BuildContext context) {
307-
return GoogleMapsFlutterPlatform.instance.buildViewWithTextDirection(
307+
return GoogleMapsFlutterPlatform.instance.buildViewWithConfiguration(
308308
_mapId,
309309
onPlatformViewCreated,
310310
textDirection: widget.layoutDirection ??
@@ -324,7 +324,7 @@ class _GoogleMapState extends State<GoogleMap> {
324324
@override
325325
void initState() {
326326
super.initState();
327-
_googleMapOptions = _GoogleMapOptions.fromWidget(widget);
327+
_mapConfiguration = _configurationFromMapWidget(widget);
328328
_markers = keyByMarkerId(widget.markers);
329329
_polygons = keyByPolygonId(widget.polygons);
330330
_polylines = keyByPolylineId(widget.polylines);
@@ -356,16 +356,15 @@ class _GoogleMapState extends State<GoogleMap> {
356356
}
357357

358358
Future<void> _updateOptions() async {
359-
final _GoogleMapOptions newOptions = _GoogleMapOptions.fromWidget(widget);
360-
final Map<String, dynamic> updates =
361-
_googleMapOptions.updatesMap(newOptions);
359+
final MapConfiguration newConfig = _configurationFromMapWidget(widget);
360+
final MapConfiguration updates = newConfig.diffFrom(_mapConfiguration);
362361
if (updates.isEmpty) {
363362
return;
364363
}
365364
final GoogleMapController controller = await _controller.future;
366365
// ignore: unawaited_futures
367-
controller._updateMapOptions(updates);
368-
_googleMapOptions = newOptions;
366+
controller._updateMapConfiguration(updates);
367+
_mapConfiguration = newConfig;
369368
}
370369

371370
Future<void> _updateMarkers() async {
@@ -553,98 +552,27 @@ class _GoogleMapState extends State<GoogleMap> {
553552
}
554553
}
555554

556-
/// Configuration options for the GoogleMaps user interface.
557-
class _GoogleMapOptions {
558-
_GoogleMapOptions.fromWidget(GoogleMap map)
559-
: compassEnabled = map.compassEnabled,
560-
mapToolbarEnabled = map.mapToolbarEnabled,
561-
cameraTargetBounds = map.cameraTargetBounds,
562-
mapType = map.mapType,
563-
minMaxZoomPreference = map.minMaxZoomPreference,
564-
rotateGesturesEnabled = map.rotateGesturesEnabled,
565-
scrollGesturesEnabled = map.scrollGesturesEnabled,
566-
tiltGesturesEnabled = map.tiltGesturesEnabled,
567-
trackCameraPosition = map.onCameraMove != null,
568-
zoomControlsEnabled = map.zoomControlsEnabled,
569-
zoomGesturesEnabled = map.zoomGesturesEnabled,
570-
liteModeEnabled = map.liteModeEnabled,
571-
myLocationEnabled = map.myLocationEnabled,
572-
myLocationButtonEnabled = map.myLocationButtonEnabled,
573-
padding = map.padding,
574-
indoorViewEnabled = map.indoorViewEnabled,
575-
trafficEnabled = map.trafficEnabled,
576-
buildingsEnabled = map.buildingsEnabled,
577-
assert(!map.liteModeEnabled || Platform.isAndroid);
578-
579-
final bool compassEnabled;
580-
581-
final bool mapToolbarEnabled;
582-
583-
final CameraTargetBounds cameraTargetBounds;
584-
585-
final MapType mapType;
586-
587-
final MinMaxZoomPreference minMaxZoomPreference;
588-
589-
final bool rotateGesturesEnabled;
590-
591-
final bool scrollGesturesEnabled;
592-
593-
final bool tiltGesturesEnabled;
594-
595-
final bool trackCameraPosition;
596-
597-
final bool zoomControlsEnabled;
598-
599-
final bool zoomGesturesEnabled;
600-
601-
final bool liteModeEnabled;
602-
603-
final bool myLocationEnabled;
604-
605-
final bool myLocationButtonEnabled;
606-
607-
final EdgeInsets padding;
608-
609-
final bool indoorViewEnabled;
610-
611-
final bool trafficEnabled;
612-
613-
final bool buildingsEnabled;
614-
615-
Map<String, dynamic> toMap() {
616-
return <String, dynamic>{
617-
'compassEnabled': compassEnabled,
618-
'mapToolbarEnabled': mapToolbarEnabled,
619-
'cameraTargetBounds': cameraTargetBounds.toJson(),
620-
'mapType': mapType.index,
621-
'minMaxZoomPreference': minMaxZoomPreference.toJson(),
622-
'rotateGesturesEnabled': rotateGesturesEnabled,
623-
'scrollGesturesEnabled': scrollGesturesEnabled,
624-
'tiltGesturesEnabled': tiltGesturesEnabled,
625-
'zoomControlsEnabled': zoomControlsEnabled,
626-
'zoomGesturesEnabled': zoomGesturesEnabled,
627-
'liteModeEnabled': liteModeEnabled,
628-
'trackCameraPosition': trackCameraPosition,
629-
'myLocationEnabled': myLocationEnabled,
630-
'myLocationButtonEnabled': myLocationButtonEnabled,
631-
'padding': <double>[
632-
padding.top,
633-
padding.left,
634-
padding.bottom,
635-
padding.right,
636-
],
637-
'indoorEnabled': indoorViewEnabled,
638-
'trafficEnabled': trafficEnabled,
639-
'buildingsEnabled': buildingsEnabled,
640-
};
641-
}
642-
643-
Map<String, dynamic> updatesMap(_GoogleMapOptions newOptions) {
644-
final Map<String, dynamic> prevOptionsMap = toMap();
645-
646-
return newOptions.toMap()
647-
..removeWhere(
648-
(String key, dynamic value) => prevOptionsMap[key] == value);
649-
}
555+
/// Builds a [MapConfiguration] from the given [map].
556+
MapConfiguration _configurationFromMapWidget(GoogleMap map) {
557+
assert(!map.liteModeEnabled || Platform.isAndroid);
558+
return MapConfiguration(
559+
compassEnabled: map.compassEnabled,
560+
mapToolbarEnabled: map.mapToolbarEnabled,
561+
cameraTargetBounds: map.cameraTargetBounds,
562+
mapType: map.mapType,
563+
minMaxZoomPreference: map.minMaxZoomPreference,
564+
rotateGesturesEnabled: map.rotateGesturesEnabled,
565+
scrollGesturesEnabled: map.scrollGesturesEnabled,
566+
tiltGesturesEnabled: map.tiltGesturesEnabled,
567+
trackCameraPosition: map.onCameraMove != null,
568+
zoomControlsEnabled: map.zoomControlsEnabled,
569+
zoomGesturesEnabled: map.zoomGesturesEnabled,
570+
liteModeEnabled: map.liteModeEnabled,
571+
myLocationEnabled: map.myLocationEnabled,
572+
myLocationButtonEnabled: map.myLocationButtonEnabled,
573+
padding: map.padding,
574+
indoorViewEnabled: map.indoorViewEnabled,
575+
trafficEnabled: map.trafficEnabled,
576+
buildingsEnabled: map.buildingsEnabled,
577+
);
650578
}

packages/google_maps_flutter/google_maps_flutter/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: google_maps_flutter
22
description: A Flutter plugin for integrating Google Maps in iOS and Android applications.
33
repository: https://github.com/flutter/plugins/tree/main/packages/google_maps_flutter/google_maps_flutter
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22
5-
version: 2.1.7
5+
version: 2.1.8
66

77
environment:
88
sdk: ">=2.14.0 <3.0.0"

packages/google_maps_flutter/google_maps_flutter/test/map_creation_test.dart

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import 'dart:async';
77
// ignore: unnecessary_import
88
import 'dart:typed_data';
99

10-
import 'package:flutter/foundation.dart';
11-
import 'package:flutter/gestures.dart';
1210
import 'package:flutter/services.dart';
1311
import 'package:flutter/widgets.dart';
1412
import 'package:flutter_test/flutter_test.dart';
@@ -90,8 +88,8 @@ class TestGoogleMapsFlutterPlatform extends GoogleMapsFlutterPlatform {
9088
Future<void> init(int mapId) async {}
9189

9290
@override
93-
Future<void> updateMapOptions(
94-
Map<String, dynamic> optionsUpdate, {
91+
Future<void> updateMapConfiguration(
92+
MapConfiguration update, {
9593
required int mapId,
9694
}) async {}
9795

@@ -278,7 +276,7 @@ class TestGoogleMapsFlutterPlatform extends GoogleMapsFlutterPlatform {
278276
}
279277

280278
@override
281-
Widget buildView(
279+
Widget buildViewWithConfiguration(
282280
int creationId,
283281
PlatformViewCreatedCallback onPlatformViewCreated, {
284282
required CameraPosition initialCameraPosition,

0 commit comments

Comments
 (0)