Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 2.17.2

* Add support for mapTypeControlEnabled, fullscreenControlEnabled, streetViewControlEnabled on web.

## 2.17.1

* Updates README to link to implementation packages for platform-specific
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@ class GoogleMap extends StatefulWidget {
this.webCameraControlEnabled = true,
this.compassEnabled = true,
this.mapToolbarEnabled = true,
this.mapTypeControlEnabled = false,
this.fullscreenControlEnabled = false,
this.streetViewControlEnabled = false,
this.cameraTargetBounds = CameraTargetBounds.unbounded,
this.mapType = MapType.normal,
this.minMaxZoomPreference = MinMaxZoomPreference.unbounded,
Expand Down Expand Up @@ -374,6 +377,21 @@ class GoogleMap extends StatefulWidget {
/// See https://developers.google.com/maps/documentation/javascript/controls for more details.
final bool webCameraControlEnabled;

/// True if map type control should be shown.
///
/// Web only.
final bool mapTypeControlEnabled;

/// True if fullscreen control should be shown.
///
/// Web only.
final bool fullscreenControlEnabled;

/// True if street view control should be shown.
///
/// Web only.
final bool streetViewControlEnabled;

/// Identifier that's associated with a specific cloud-based map style.
///
/// See https://developers.google.com/maps/documentation/get-map-id
Expand Down Expand Up @@ -724,6 +742,9 @@ MapConfiguration _configurationFromMapWidget(GoogleMap map) {
webGestureHandling: map.webGestureHandling,
compassEnabled: map.compassEnabled,
mapToolbarEnabled: map.mapToolbarEnabled,
mapTypeControlEnabled: map.mapTypeControlEnabled,
fullscreenControlEnabled: map.fullscreenControlEnabled,
streetViewControlEnabled: map.streetViewControlEnabled,
cameraTargetBounds: map.cameraTargetBounds,
mapType: map.mapType,
minMaxZoomPreference: map.minMaxZoomPreference,
Expand Down
6 changes: 3 additions & 3 deletions packages/google_maps_flutter/google_maps_flutter/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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/packages/tree/main/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.17.1
version: 2.17.2

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Since this PR introduces new public parameters (mapTypeControlEnabled, fullscreenControlEnabled, streetViewControlEnabled) to the GoogleMap widget, this is a backward-compatible feature addition. According to Semantic Versioning, this requires a minor version bump (to 2.18.0) rather than a patch bump (to 2.17.2). Additionally, because google_maps_flutter now uses the new fields of MapConfiguration introduced in google_maps_flutter_platform_interface, you must update the dependency on google_maps_flutter_platform_interface in this pubspec.yaml to require the new version (e.g., ^2.16.0). Otherwise, compilation will fail if an older version of the platform interface is resolved.

version: 2.18.0


environment:
sdk: ^3.10.0
Expand All @@ -23,8 +23,8 @@ dependencies:
sdk: flutter
google_maps_flutter_android: ^2.19.1
google_maps_flutter_ios: ^2.18.0
google_maps_flutter_platform_interface: ^2.15.0
google_maps_flutter_web: ^0.6.2
google_maps_flutter_platform_interface: ^2.15.1
google_maps_flutter_web: ^0.6.3

dev_dependencies:
flutter_test:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,81 @@ void main() {
expect(map.mapConfiguration.mapToolbarEnabled, true);
});

testWidgets('Can update mapTypeControlEnabled', (WidgetTester tester) async {
await tester.pumpWidget(
const Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(
initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
mapTypeControlEnabled: true,
),
),
);

final PlatformMapStateRecorder map = platform.lastCreatedMap;

expect(map.mapConfiguration.mapTypeControlEnabled, true);

await tester.pumpWidget(
const Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0))),
),
);

expect(map.mapConfiguration.mapTypeControlEnabled, false);
});

testWidgets('Can update fullscreenControlEnabled', (WidgetTester tester) async {
await tester.pumpWidget(
const Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(
initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
fullscreenControlEnabled: true,
),
),
);

final PlatformMapStateRecorder map = platform.lastCreatedMap;

expect(map.mapConfiguration.fullscreenControlEnabled, true);

await tester.pumpWidget(
const Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0))),
),
);

expect(map.mapConfiguration.fullscreenControlEnabled, false);
});

testWidgets('Can update streetViewControlEnabled', (WidgetTester tester) async {
await tester.pumpWidget(
const Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(
initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
streetViewControlEnabled: true,
),
),
);

final PlatformMapStateRecorder map = platform.lastCreatedMap;

expect(map.mapConfiguration.streetViewControlEnabled, true);

await tester.pumpWidget(
const Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0))),
),
);

expect(map.mapConfiguration.streetViewControlEnabled, false);
});

testWidgets('Can update cameraTargetBounds', (WidgetTester tester) async {
await tester.pumpWidget(
Directionality(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

* Updates minimum supported SDK version to Flutter 3.38/Dart 3.10.

## 2.15.1

* Add support for mapTypeControlEnabled, fullscreenControlEnabled, streetViewControlEnabled on web.

## 2.15.0

* Adds support for `colorScheme` for cloud-based maps styling brightness in web.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ class MapConfiguration {
this.indoorViewEnabled,
this.trafficEnabled,
this.buildingsEnabled,
this.mapTypeControlEnabled,
this.fullscreenControlEnabled,
this.streetViewControlEnabled,
String? mapId,
@Deprecated('cloudMapId is deprecated. Use mapId instead.') String? cloudMapId,
this.style,
Expand Down Expand Up @@ -67,6 +70,21 @@ class MapConfiguration {
/// True if the map toolbar should be shown.
final bool? mapToolbarEnabled;

/// True if map type control should be shown.
///
/// Web only.
final bool? mapTypeControlEnabled;

/// True if fullscreen control should be shown.
///
/// Web only.
final bool? fullscreenControlEnabled;

/// True if street view control should be shown.
///
/// Web only.
final bool? streetViewControlEnabled;

/// The bounds to display.
final CameraTargetBounds? cameraTargetBounds;

Expand Down Expand Up @@ -210,6 +228,15 @@ class MapConfiguration {
indoorViewEnabled: indoorViewEnabled != other.indoorViewEnabled ? indoorViewEnabled : null,
trafficEnabled: trafficEnabled != other.trafficEnabled ? trafficEnabled : null,
buildingsEnabled: buildingsEnabled != other.buildingsEnabled ? buildingsEnabled : null,
mapTypeControlEnabled: mapTypeControlEnabled != other.mapTypeControlEnabled
? mapTypeControlEnabled
: null,
fullscreenControlEnabled: fullscreenControlEnabled != other.fullscreenControlEnabled
? fullscreenControlEnabled
: null,
streetViewControlEnabled: streetViewControlEnabled != other.streetViewControlEnabled
? streetViewControlEnabled
: null,
mapId: mapId != other.mapId ? mapId : null,
style: style != other.style ? style : null,
markerType: markerType != other.markerType ? markerType : null,
Expand Down Expand Up @@ -244,6 +271,9 @@ class MapConfiguration {
indoorViewEnabled: diff.indoorViewEnabled ?? indoorViewEnabled,
trafficEnabled: diff.trafficEnabled ?? trafficEnabled,
buildingsEnabled: diff.buildingsEnabled ?? buildingsEnabled,
mapTypeControlEnabled: diff.mapTypeControlEnabled ?? mapTypeControlEnabled,
fullscreenControlEnabled: diff.fullscreenControlEnabled ?? fullscreenControlEnabled,
streetViewControlEnabled: diff.streetViewControlEnabled ?? streetViewControlEnabled,
mapId: diff.mapId ?? mapId,
style: diff.style ?? style,
markerType: diff.markerType ?? markerType,
Expand Down Expand Up @@ -275,6 +305,9 @@ class MapConfiguration {
indoorViewEnabled == null &&
trafficEnabled == null &&
buildingsEnabled == null &&
mapTypeControlEnabled == null &&
fullscreenControlEnabled == null &&
streetViewControlEnabled == null &&
mapId == null &&
style == null &&
markerType == null &&
Expand Down Expand Up @@ -311,6 +344,9 @@ class MapConfiguration {
indoorViewEnabled == other.indoorViewEnabled &&
trafficEnabled == other.trafficEnabled &&
buildingsEnabled == other.buildingsEnabled &&
mapTypeControlEnabled == other.mapTypeControlEnabled &&
fullscreenControlEnabled == other.fullscreenControlEnabled &&
streetViewControlEnabled == other.streetViewControlEnabled &&
mapId == other.mapId &&
style == other.style &&
markerType == other.markerType &&
Expand Down Expand Up @@ -341,6 +377,9 @@ class MapConfiguration {
indoorViewEnabled,
trafficEnabled,
buildingsEnabled,
mapTypeControlEnabled,
fullscreenControlEnabled,
streetViewControlEnabled,
mapId,
style,
markerType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ repository: https://github.com/flutter/packages/tree/main/packages/google_maps_f
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22
# NOTE: We strongly prefer non-breaking changes, even at the expense of a
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
version: 2.15.0
version: 2.15.1

environment:
sdk: ^3.10.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ void main() {
indoorViewEnabled: false,
trafficEnabled: false,
buildingsEnabled: false,
mapTypeControlEnabled: false,
fullscreenControlEnabled: false,
streetViewControlEnabled: false,
style: 'diff base style',
);

Expand Down Expand Up @@ -490,6 +493,42 @@ void main() {
// The hash code should change.
expect(empty.hashCode, isNot(diff.hashCode));
});

test('handle mapTypeControlEnabled', () async {
const diff = MapConfiguration(mapTypeControlEnabled: true);

const empty = MapConfiguration();
final MapConfiguration updated = diffBase.applyDiff(diff);

expect(empty.applyDiff(diff), diff);
expect(diff.diffFrom(empty), diff);
expect(updated.mapTypeControlEnabled, true);
expect(empty.hashCode, isNot(diff.hashCode));
});

test('handle fullscreenControlEnabled', () async {
const diff = MapConfiguration(fullscreenControlEnabled: true);

const empty = MapConfiguration();
final MapConfiguration updated = diffBase.applyDiff(diff);

expect(empty.applyDiff(diff), diff);
expect(diff.diffFrom(empty), diff);
expect(updated.fullscreenControlEnabled, true);
expect(empty.hashCode, isNot(diff.hashCode));
});

test('handle streetViewControlEnabled', () async {
const diff = MapConfiguration(streetViewControlEnabled: true);

const empty = MapConfiguration();
final MapConfiguration updated = diffBase.applyDiff(diff);

expect(empty.applyDiff(diff), diff);
expect(diff.diffFrom(empty), diff);
expect(updated.streetViewControlEnabled, true);
expect(empty.hashCode, isNot(diff.hashCode));
});
});

group('isEmpty', () {
Expand Down Expand Up @@ -649,5 +688,23 @@ void main() {

expect(diff.isEmpty, false);
});

test('is false with mapTypeControlEnabled', () async {
const diff = MapConfiguration(mapTypeControlEnabled: true);

expect(diff.isEmpty, false);
});

test('is false with fullscreenControlEnabled', () async {
const diff = MapConfiguration(fullscreenControlEnabled: true);

expect(diff.isEmpty, false);
});

test('is false with streetViewControlEnabled', () async {
const diff = MapConfiguration(streetViewControlEnabled: true);

expect(diff.isEmpty, false);
});
});
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.6.3

* Add support for mapTypeControlEnabled, fullscreenControlEnabled, streetViewControlEnabled on web.

## 0.6.2+3

* Updates README to include setup information.
Expand Down
Loading
Loading