diff --git a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md index f90a2517bd75..fbbc3cc885a9 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 @@ +## 0.5.25 + +* Add an optional param `mipmaps` for `BitmapDescriptor.fromAssetImage`. + ## 0.5.24+1 * Make the pedantic dev_dependency explicit. diff --git a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart index 122d43cf8a18..77621693bca6 100644 --- a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart +++ b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart @@ -823,4 +823,19 @@ void main() { iwVisibleStatus = await controller.isMarkerInfoWindowShown(marker.markerId); expect(iwVisibleStatus, false); }); + + testWidgets("fromAssetImage", (WidgetTester tester) async { + double pixelRatio = 2; + final ImageConfiguration imageConfiguration = + ImageConfiguration(devicePixelRatio: pixelRatio); + final BitmapDescriptor mip = await BitmapDescriptor.fromAssetImage( + imageConfiguration, 'red_square.png'); + final BitmapDescriptor scaled = await BitmapDescriptor.fromAssetImage( + imageConfiguration, 'red_square.png', + mipmaps: false); + // ignore: invalid_use_of_visible_for_testing_member + expect(mip.toJson()[2], 1); + // ignore: invalid_use_of_visible_for_testing_member + expect(scaled.toJson()[2], 2); + }); } diff --git a/packages/google_maps_flutter/google_maps_flutter/lib/src/bitmap.dart b/packages/google_maps_flutter/google_maps_flutter/lib/src/bitmap.dart index ca6ed6eb138a..7cf5b2e25b7e 100644 --- a/packages/google_maps_flutter/google_maps_flutter/lib/src/bitmap.dart +++ b/packages/google_maps_flutter/google_maps_flutter/lib/src/bitmap.dart @@ -72,13 +72,15 @@ class BitmapDescriptor { /// https://flutter.dev/docs/development/ui/assets-and-images#declaring-resolution-aware-image-assets /// This method takes into consideration various asset resolutions /// and scales the images to the right resolution depending on the dpi. + /// Set `mipmaps` to false to load the exact dpi version of the image, `mipmap` is true by default. static Future fromAssetImage( ImageConfiguration configuration, String assetName, { AssetBundle bundle, String package, + bool mipmaps = true, }) async { - if (configuration.devicePixelRatio != null) { + if (!mipmaps && configuration.devicePixelRatio != null) { return BitmapDescriptor._([ 'fromAssetImage', assetName, @@ -104,5 +106,10 @@ class BitmapDescriptor { final dynamic _json; + /// Convert the object to a Json format. + /// Used for testing only. + @visibleForTesting + dynamic toJson() => _json; + dynamic _toJson() => _json; } diff --git a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml index 5ff3e3f22288..e6dfb6bea412 100644 --- a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml +++ b/packages/google_maps_flutter/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/google_maps_flutter -version: 0.5.24+1 +version: 0.5.25 dependencies: flutter: