[google_maps_flutter_platform_interface] Add dispose method. (#2908)

This method gives the plugin writers a chance to release the resources that they've acquired throughout the operation of the plugin (think of it as an "inverse" of the "init" method).
diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md
index 47cb8ec..dc8eddf 100644
--- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.4
+
+* Add a `dispose` method to the interface, so implementations may cleanup resources acquired on `init`.
+
 ## 1.0.3
 
 * Pass icon width/height if present on `fromAssetImage` BitmapDescriptors (web only)
diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/method_channel/method_channel_google_maps_flutter.dart b/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/method_channel/method_channel_google_maps_flutter.dart
index edbc51a..3139235 100644
--- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/method_channel/method_channel_google_maps_flutter.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/method_channel/method_channel_google_maps_flutter.dart
@@ -48,6 +48,12 @@
     return channel.invokeMethod<void>('map#waitForMap');
   }
 
+  /// Dispose of the native resources.
+  @override
+  void dispose({int mapId}) {
+    // Noop!
+  }
+
   // The controller we need to broadcast the different events coming
   // from handleMethodCall.
   //
diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/platform_interface/google_maps_flutter_platform.dart b/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/platform_interface/google_maps_flutter_platform.dart
index b89d342..a4f4877 100644
--- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/platform_interface/google_maps_flutter_platform.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/platform_interface/google_maps_flutter_platform.dart
@@ -304,6 +304,11 @@
     throw UnimplementedError('onLongPress() has not been implemented.');
   }
 
+  /// Dispose of whatever resources the `mapId` is holding on to.
+  void dispose({@required int mapId}) {
+    throw UnimplementedError('dispose() has not been implemented.');
+  }
+
   /// Returns a widget displaying the map view
   Widget buildView(
       Map<String, dynamic> creationParams,
diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml
index f062b25..fd3a1c4 100644
--- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml
@@ -3,7 +3,7 @@
 homepage: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter/google_maps_flutter_platform_interface
 # 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: 1.0.3
+version: 1.0.4
 
 dependencies:
   flutter: