Here you can find more information. This is an old issue reported. link: https://github.com/flutter/flutter/issues/24865
I have just been playing with this. I was supplying image files at higher resolution, @2x and @3x for iOS and the equivalent for Android. These files are just being ignored and only the base resolution image is being used. iOS then automatically scales the images for higher resolution screens, but Android doesn't do this automatic scaling and just displays the icon at 1x. This is why the icons appear larger on iOS than on Android.
One hack to deal with it:
BitmapDescriptor get deliveryIcon {
bool isIOS = Theme.of(context).platform == TargetPlatform.iOS;
if (isIOS)
return BitmapDescriptor.fromAsset('assets/icons/orange_pin.png');
else
return BitmapDescriptor.fromAsset('assets/icons/3.0x/orange_pin.png');
}
A better implementation is using Uint8List:
Future<Uint8List> getBytesFromAsset(String path, int width) async {
ByteData data = await rootBundle.load(path);
ui.Codec codec = await ui.instantiateImageCodec(data.buffer.asUint8List(), targetWidth: width);
ui.FrameInfo fi = await codec.getNextFrame();
return (await fi.image.toByteData(format: ui.ImageByteFormat.png)).buffer.asUint8List();
}
Here you have more info:
How to change the icon size of Google Maps marker in Flutter?