[google_maps_flutter] Add documentation (#2303)


diff --git a/packages/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/CHANGELOG.md
index 0bf3943..18becc1 100644
--- a/packages/google_maps_flutter/CHANGELOG.md
+++ b/packages/google_maps_flutter/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.5.21+13
+
+* Add documentation.
+
 ## 0.5.21+12
 
 * Update driver tests in the example app to e2e tests.
diff --git a/packages/google_maps_flutter/analysis_options.yaml b/packages/google_maps_flutter/analysis_options.yaml
deleted file mode 100644
index d4ccef6..0000000
--- a/packages/google_maps_flutter/analysis_options.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-# This is a temporary file to allow us to land a new set of linter rules in a
-# series of manageable patches instead of one gigantic PR. It disables some of
-# the new lints that are already failing on this plugin, for this plugin. It
-# should be deleted and the failing lints addressed as soon as possible.
-
-include: ../../analysis_options.yaml
-
-analyzer:
-  errors:
-    public_member_api_docs: ignore
-    unawaited_futures: ignore
diff --git a/packages/google_maps_flutter/example/lib/animate_camera.dart b/packages/google_maps_flutter/example/lib/animate_camera.dart
index fe4283d..f131c13 100644
--- a/packages/google_maps_flutter/example/lib/animate_camera.dart
+++ b/packages/google_maps_flutter/example/lib/animate_camera.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/material.dart';
 import 'package:google_maps_flutter/google_maps_flutter.dart';
 
diff --git a/packages/google_maps_flutter/example/lib/main.dart b/packages/google_maps_flutter/example/lib/main.dart
index c082f18..f4b8776 100644
--- a/packages/google_maps_flutter/example/lib/main.dart
+++ b/packages/google_maps_flutter/example/lib/main.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/material.dart';
 import 'animate_camera.dart';
 import 'map_click.dart';
diff --git a/packages/google_maps_flutter/example/lib/map_click.dart b/packages/google_maps_flutter/example/lib/map_click.dart
index a73595d..96d239b 100644
--- a/packages/google_maps_flutter/example/lib/map_click.dart
+++ b/packages/google_maps_flutter/example/lib/map_click.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
 import 'package:google_maps_flutter/google_maps_flutter.dart';
diff --git a/packages/google_maps_flutter/example/lib/map_coordinates.dart b/packages/google_maps_flutter/example/lib/map_coordinates.dart
index fd707fb..dcc08f2 100644
--- a/packages/google_maps_flutter/example/lib/map_coordinates.dart
+++ b/packages/google_maps_flutter/example/lib/map_coordinates.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
 import 'package:google_maps_flutter/google_maps_flutter.dart';
diff --git a/packages/google_maps_flutter/example/lib/map_ui.dart b/packages/google_maps_flutter/example/lib/map_ui.dart
index c20aaf2..2a84e71 100644
--- a/packages/google_maps_flutter/example/lib/map_ui.dart
+++ b/packages/google_maps_flutter/example/lib/map_ui.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/material.dart';
 import 'package:google_maps_flutter/google_maps_flutter.dart';
 import 'package:flutter/services.dart' show rootBundle;
diff --git a/packages/google_maps_flutter/example/lib/marker_icons.dart b/packages/google_maps_flutter/example/lib/marker_icons.dart
index 7472e8f..ad1ec38 100644
--- a/packages/google_maps_flutter/example/lib/marker_icons.dart
+++ b/packages/google_maps_flutter/example/lib/marker_icons.dart
@@ -2,6 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+// ignore_for_file: unawaited_futures
+
 import 'package:flutter/material.dart';
 import 'package:google_maps_flutter/google_maps_flutter.dart';
 
diff --git a/packages/google_maps_flutter/example/lib/move_camera.dart b/packages/google_maps_flutter/example/lib/move_camera.dart
index 299ac4b..5b52836 100644
--- a/packages/google_maps_flutter/example/lib/move_camera.dart
+++ b/packages/google_maps_flutter/example/lib/move_camera.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/material.dart';
 import 'package:google_maps_flutter/google_maps_flutter.dart';
 
diff --git a/packages/google_maps_flutter/example/lib/padding.dart b/packages/google_maps_flutter/example/lib/padding.dart
index 6c1fe38..a9e4e54 100644
--- a/packages/google_maps_flutter/example/lib/padding.dart
+++ b/packages/google_maps_flutter/example/lib/padding.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/material.dart';
 import 'package:google_maps_flutter/google_maps_flutter.dart';
 import 'page.dart';
diff --git a/packages/google_maps_flutter/example/lib/page.dart b/packages/google_maps_flutter/example/lib/page.dart
index c9f834b..32f3645 100644
--- a/packages/google_maps_flutter/example/lib/page.dart
+++ b/packages/google_maps_flutter/example/lib/page.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/material.dart';
 
 abstract class Page extends StatelessWidget {
diff --git a/packages/google_maps_flutter/example/lib/place_circle.dart b/packages/google_maps_flutter/example/lib/place_circle.dart
index fb9436a..b44413a 100644
--- a/packages/google_maps_flutter/example/lib/place_circle.dart
+++ b/packages/google_maps_flutter/example/lib/place_circle.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/material.dart';
 import 'package:google_maps_flutter/google_maps_flutter.dart';
 
diff --git a/packages/google_maps_flutter/example/lib/place_marker.dart b/packages/google_maps_flutter/example/lib/place_marker.dart
index f38ee43..ce0f9d4 100644
--- a/packages/google_maps_flutter/example/lib/place_marker.dart
+++ b/packages/google_maps_flutter/example/lib/place_marker.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'dart:async';
 import 'dart:math';
 import 'dart:ui';
diff --git a/packages/google_maps_flutter/example/lib/place_polygon.dart b/packages/google_maps_flutter/example/lib/place_polygon.dart
index 25818c7..e78fd1c 100644
--- a/packages/google_maps_flutter/example/lib/place_polygon.dart
+++ b/packages/google_maps_flutter/example/lib/place_polygon.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/material.dart';
 import 'package:google_maps_flutter/google_maps_flutter.dart';
 
diff --git a/packages/google_maps_flutter/example/lib/place_polyline.dart b/packages/google_maps_flutter/example/lib/place_polyline.dart
index e2b0d3f..52fc22f 100644
--- a/packages/google_maps_flutter/example/lib/place_polyline.dart
+++ b/packages/google_maps_flutter/example/lib/place_polyline.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'dart:io' show Platform;
 
 import 'package:flutter/material.dart';
diff --git a/packages/google_maps_flutter/example/lib/scrolling_map.dart b/packages/google_maps_flutter/example/lib/scrolling_map.dart
index 9597e46..30359c9 100644
--- a/packages/google_maps_flutter/example/lib/scrolling_map.dart
+++ b/packages/google_maps_flutter/example/lib/scrolling_map.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+// ignore_for_file: public_member_api_docs
+
 import 'package:flutter/foundation.dart';
 import 'package:flutter/gestures.dart';
 import 'package:flutter/material.dart';
diff --git a/packages/google_maps_flutter/example/test_driver/google_maps_e2e_test.dart b/packages/google_maps_flutter/example/test_driver/google_maps_e2e_test.dart
index ff6e9ce..f3aa9e2 100644
--- a/packages/google_maps_flutter/example/test_driver/google_maps_e2e_test.dart
+++ b/packages/google_maps_flutter/example/test_driver/google_maps_e2e_test.dart
@@ -10,6 +10,6 @@
   final FlutterDriver driver = await FlutterDriver.connect();
   final String result =
       await driver.requestData(null, timeout: const Duration(minutes: 1));
-  driver.close();
+  await driver.close();
   exit(result == 'pass' ? 0 : 1);
 }
diff --git a/packages/google_maps_flutter/lib/src/bitmap.dart b/packages/google_maps_flutter/lib/src/bitmap.dart
index e239956..ca6ed6e 100644
--- a/packages/google_maps_flutter/lib/src/bitmap.dart
+++ b/packages/google_maps_flutter/lib/src/bitmap.dart
@@ -10,15 +10,34 @@
 class BitmapDescriptor {
   const BitmapDescriptor._(this._json);
 
+  /// Convenience hue value representing red.
   static const double hueRed = 0.0;
+
+  /// Convenience hue value representing orange.
   static const double hueOrange = 30.0;
+
+  /// Convenience hue value representing yellow.
   static const double hueYellow = 60.0;
+
+  /// Convenience hue value representing green.
   static const double hueGreen = 120.0;
+
+  /// Convenience hue value representing cyan.
   static const double hueCyan = 180.0;
+
+  /// Convenience hue value representing azure.
   static const double hueAzure = 210.0;
+
+  /// Convenience hue value representing blue.
   static const double hueBlue = 240.0;
+
+  /// Convenience hue value representing violet.
   static const double hueViolet = 270.0;
+
+  /// Convenience hue value representing magenta.
   static const double hueMagenta = 300.0;
+
+  /// Convenience hue value representing rose.
   static const double hueRose = 330.0;
 
   /// Creates a BitmapDescriptor that refers to the default marker image.
diff --git a/packages/google_maps_flutter/lib/src/camera.dart b/packages/google_maps_flutter/lib/src/camera.dart
index 78d624b..043d0f8 100644
--- a/packages/google_maps_flutter/lib/src/camera.dart
+++ b/packages/google_maps_flutter/lib/src/camera.dart
@@ -4,10 +4,15 @@
 
 part of google_maps_flutter;
 
-/// The position of the map "camera", the view point from which the world is
-/// shown in the map view. Aggregates the camera's [target] geographical
-/// location, its [zoom] level, [tilt] angle, and [bearing].
+/// The position of the map "camera", the view point from which the world is shown in the map view.
+///
+/// Aggregates the camera's [target] geographical location, its [zoom] level,
+/// [tilt] angle, and [bearing].
 class CameraPosition {
+  /// Creates a immutable representation of the [GoogleMap] camera.
+  ///
+  /// [AssertionError] is thrown if [bearing], [target], [tilt], or [zoom] are
+  /// null.
   const CameraPosition({
     this.bearing = 0.0,
     @required this.target,
@@ -51,6 +56,9 @@
   /// will be silently clamped to the supported range.
   final double zoom;
 
+  /// Serializes [CameraPosition].
+  ///
+  /// Mainly for internal use when calling [CameraUpdate.newCameraPosition].
   dynamic toMap() => <String, dynamic>{
         'bearing': bearing,
         'target': target._toJson(),
@@ -58,6 +66,9 @@
         'zoom': zoom,
       };
 
+  /// Deserializes [CameraPosition] from a map.
+  ///
+  /// Mainly for internal use.
   static CameraPosition fromMap(dynamic json) {
     if (json == null) {
       return null;
diff --git a/packages/google_maps_flutter/lib/src/circle.dart b/packages/google_maps_flutter/lib/src/circle.dart
index 1ab966c..0de675d 100644
--- a/packages/google_maps_flutter/lib/src/circle.dart
+++ b/packages/google_maps_flutter/lib/src/circle.dart
@@ -9,6 +9,7 @@
 /// This does not have to be globally unique, only unique among the list.
 @immutable
 class CircleId {
+  /// Creates an immutable identifier for a [Circle].
   CircleId(this.value) : assert(value != null);
 
   /// value of the [CircleId].
@@ -34,6 +35,7 @@
 /// Draws a circle on the map.
 @immutable
 class Circle {
+  /// Creates an immutable representation of a [Circle] to draw on [GoogleMap].
   const Circle({
     @required this.circleId,
     this.consumeTapEvents = false,
diff --git a/packages/google_maps_flutter/lib/src/controller.dart b/packages/google_maps_flutter/lib/src/controller.dart
index 4ef8956..c6c64a5 100644
--- a/packages/google_maps_flutter/lib/src/controller.dart
+++ b/packages/google_maps_flutter/lib/src/controller.dart
@@ -14,6 +14,10 @@
     channel.setMethodCallHandler(_handleMethodCall);
   }
 
+  /// Initialize control of a [GoogleMap] with [id].
+  ///
+  /// Mainly for internal use when instantiating a [GoogleMapController] passed
+  /// in [GoogleMap.onMapCreated] callback.
   static Future<GoogleMapController> init(
     int id,
     CameraPosition initialCameraPosition,
@@ -30,6 +34,9 @@
     );
   }
 
+  /// Used to communicate with the native platform.
+  ///
+  /// Accessible only for testing.
   @visibleForTesting
   final MethodChannel channel;
 
diff --git a/packages/google_maps_flutter/lib/src/google_map.dart b/packages/google_maps_flutter/lib/src/google_map.dart
index fa5c3fd..d1f85a0 100644
--- a/packages/google_maps_flutter/lib/src/google_map.dart
+++ b/packages/google_maps_flutter/lib/src/google_map.dart
@@ -4,6 +4,10 @@
 
 part of google_maps_flutter;
 
+/// Callback method for when the map is ready to be used.
+///
+/// Pass to [GoogleMap.onMapCreated] to receive a [GoogleMapController] when the
+/// map is created.
 typedef void MapCreatedCallback(GoogleMapController controller);
 
 /// Callback that receives updates to the camera position.
@@ -14,7 +18,11 @@
 /// This is used in [GoogleMap.onCameraMove].
 typedef void CameraPositionCallback(CameraPosition position);
 
+/// A widget which displays a map with data obtained from the Google Maps service.
 class GoogleMap extends StatefulWidget {
+  /// Creates a widget displaying data from Google Maps services.
+  ///
+  /// [AssertionError] will be thrown if [initialCameraPosition] is null;
   const GoogleMap({
     Key key,
     @required this.initialCameraPosition,
@@ -48,6 +56,9 @@
   })  : assert(initialCameraPosition != null),
         super(key: key);
 
+  /// Callback method for when the map is ready to be used.
+  ///
+  /// Used to receive a [GoogleMapController] for this [GoogleMap].
   final MapCreatedCallback onMapCreated;
 
   /// The initial position of the map's camera.
@@ -179,6 +190,7 @@
   /// were not claimed by any other gesture recognizer.
   final Set<Factory<OneSequenceGestureRecognizer>> gestureRecognizers;
 
+  /// Creates a [State] for this [GoogleMap].
   @override
   State createState() => _GoogleMapState();
 }
@@ -253,12 +265,14 @@
       return;
     }
     final GoogleMapController controller = await _controller.future;
+    // ignore: unawaited_futures
     controller._updateMapOptions(updates);
     _googleMapOptions = newOptions;
   }
 
   void _updateMarkers() async {
     final GoogleMapController controller = await _controller.future;
+    // ignore: unawaited_futures
     controller._updateMarkers(
         _MarkerUpdates.from(_markers.values.toSet(), widget.markers));
     _markers = _keyByMarkerId(widget.markers);
@@ -266,6 +280,7 @@
 
   void _updatePolygons() async {
     final GoogleMapController controller = await _controller.future;
+    // ignore: unawaited_futures
     controller._updatePolygons(
         _PolygonUpdates.from(_polygons.values.toSet(), widget.polygons));
     _polygons = _keyByPolygonId(widget.polygons);
@@ -273,6 +288,7 @@
 
   void _updatePolylines() async {
     final GoogleMapController controller = await _controller.future;
+    // ignore: unawaited_futures
     controller._updatePolylines(
         _PolylineUpdates.from(_polylines.values.toSet(), widget.polylines));
     _polylines = _keyByPolylineId(widget.polylines);
@@ -280,6 +296,7 @@
 
   void _updateCircles() async {
     final GoogleMapController controller = await _controller.future;
+    // ignore: unawaited_futures
     controller._updateCircles(
         _CircleUpdates.from(_circles.values.toSet(), widget.circles));
     _circles = _keyByCircleId(widget.circles);
diff --git a/packages/google_maps_flutter/lib/src/location.dart b/packages/google_maps_flutter/lib/src/location.dart
index f0c6b62..3d1452a 100644
--- a/packages/google_maps_flutter/lib/src/location.dart
+++ b/packages/google_maps_flutter/lib/src/location.dart
@@ -95,6 +95,7 @@
     }
   }
 
+  /// Converts a list to [LatLngBounds].
   @visibleForTesting
   static LatLngBounds fromList(dynamic json) {
     if (json == null) {
diff --git a/packages/google_maps_flutter/lib/src/marker.dart b/packages/google_maps_flutter/lib/src/marker.dart
index 5d4d4f3..5690cdd 100644
--- a/packages/google_maps_flutter/lib/src/marker.dart
+++ b/packages/google_maps_flutter/lib/src/marker.dart
@@ -13,6 +13,7 @@
 
 /// Text labels for a [Marker] info window.
 class InfoWindow {
+  /// Creates an immutable representation of a label on for [Marker].
   const InfoWindow({
     this.title,
     this.snippet,
@@ -100,6 +101,7 @@
 /// This does not have to be globally unique, only unique among the list.
 @immutable
 class MarkerId {
+  /// Creates an immutable identifier for a [Marker].
   MarkerId(this.value) : assert(value != null);
 
   /// value of the [MarkerId].
@@ -146,6 +148,8 @@
   /// * has an axis-aligned icon; [rotation] is 0.0
   /// * is visible; [visible] is true
   /// * is placed at the base of the drawing order; [zIndex] is 0.0
+  /// * reports [onTap] events
+  /// * reports [onDragEnd] events
   const Marker({
     @required this.markerId,
     this.alpha = 1.0,
@@ -217,6 +221,7 @@
   /// Callbacks to receive tap events for markers placed on this map.
   final VoidCallback onTap;
 
+  /// Signature reporting the new [LatLng] at the end of a drag event.
   final ValueChanged<LatLng> onDragEnd;
 
   /// Creates a new [Marker] object whose values are the same as this instance,
diff --git a/packages/google_maps_flutter/lib/src/pattern_item.dart b/packages/google_maps_flutter/lib/src/pattern_item.dart
index 6d30c72..82e8703 100644
--- a/packages/google_maps_flutter/lib/src/pattern_item.dart
+++ b/packages/google_maps_flutter/lib/src/pattern_item.dart
@@ -9,6 +9,7 @@
 class PatternItem {
   const PatternItem._(this._json);
 
+  /// A dot used in the stroke pattern for a [Polyline].
   static const PatternItem dot = PatternItem._(<dynamic>['dot']);
 
   /// A dash used in the stroke pattern for a [Polyline].
diff --git a/packages/google_maps_flutter/lib/src/polygon.dart b/packages/google_maps_flutter/lib/src/polygon.dart
index 4aed3bd..e6b26ca 100644
--- a/packages/google_maps_flutter/lib/src/polygon.dart
+++ b/packages/google_maps_flutter/lib/src/polygon.dart
@@ -9,6 +9,7 @@
 /// This does not have to be globally unique, only unique among the list.
 @immutable
 class PolygonId {
+  /// Creates an immutable identifier for a [Polygon].
   PolygonId(this.value) : assert(value != null);
 
   /// value of the [PolygonId].
@@ -34,6 +35,7 @@
 /// Draws a polygon through geographical locations on the map.
 @immutable
 class Polygon {
+  /// Creates an immutable representation of a polygon through geographical locations on the map.
   const Polygon({
     @required this.polygonId,
     this.consumeTapEvents = false,
diff --git a/packages/google_maps_flutter/lib/src/polyline.dart b/packages/google_maps_flutter/lib/src/polyline.dart
index 1eac145..0d7684f 100644
--- a/packages/google_maps_flutter/lib/src/polyline.dart
+++ b/packages/google_maps_flutter/lib/src/polyline.dart
@@ -9,6 +9,9 @@
 /// This does not have to be globally unique, only unique among the list.
 @immutable
 class PolylineId {
+  /// Creates an immutable object representing a [PolylineId] among [GoogleMap] polylines.
+  ///
+  /// An [AssertionError] will be thrown if [value] is null.
   PolylineId(this.value) : assert(value != null);
 
   /// value of the [PolylineId].
@@ -34,6 +37,7 @@
 /// Draws a line through geographical locations on the map.
 @immutable
 class Polyline {
+  /// Creates an immutable object representing a line drawn through geographical locations on the map.
   const Polyline({
     @required this.polylineId,
     this.consumeTapEvents = false,
diff --git a/packages/google_maps_flutter/lib/src/screen_coordinate.dart b/packages/google_maps_flutter/lib/src/screen_coordinate.dart
index 83e5751..e58abe9 100644
--- a/packages/google_maps_flutter/lib/src/screen_coordinate.dart
+++ b/packages/google_maps_flutter/lib/src/screen_coordinate.dart
@@ -11,12 +11,16 @@
 /// corresponds to top-left of the [GoogleMap] not the whole screen.
 @immutable
 class ScreenCoordinate {
+  /// Creates an immutable representation of a point coordinate in the [GoogleMap]'s view.
   const ScreenCoordinate({
     @required this.x,
     @required this.y,
   });
 
+  /// Represents the number of pixels from the left of the [GoogleMap].
   final int x;
+
+  /// Represents the number of pixels from the top of the [GoogleMap].
   final int y;
 
   dynamic _toJson() {
diff --git a/packages/google_maps_flutter/lib/src/ui.dart b/packages/google_maps_flutter/lib/src/ui.dart
index 1fb18a0..4b57ebd 100644
--- a/packages/google_maps_flutter/lib/src/ui.dart
+++ b/packages/google_maps_flutter/lib/src/ui.dart
@@ -66,6 +66,9 @@
 // distinguishing between specifying unbounded zooming (null `minZoom` and
 // `maxZoom`) from not specifying anything (null `MinMaxZoomPreference`).
 class MinMaxZoomPreference {
+  /// Creates a immutable representation of the preferred minimum and maximum zoom values for the map camera.
+  ///
+  /// [AssertionError] will be thrown if [minZoom] > [maxZoom].
   const MinMaxZoomPreference(this.minZoom, this.maxZoom)
       : assert(minZoom == null || maxZoom == null || minZoom <= maxZoom);
 
@@ -103,7 +106,9 @@
 /// See also: `setStyle` on [GoogleMapController] for why this exception
 /// might be thrown.
 class MapStyleException implements Exception {
+  /// Default constructor for [MapStyleException].
   const MapStyleException(this.cause);
 
+  /// The reason `GoogleMapController.setStyle` would throw this exception.
   final String cause;
 }
diff --git a/packages/google_maps_flutter/pubspec.yaml b/packages/google_maps_flutter/pubspec.yaml
index 320e942..1a95ba6 100644
--- a/packages/google_maps_flutter/pubspec.yaml
+++ b/packages/google_maps_flutter/pubspec.yaml
@@ -2,7 +2,7 @@
 description: A Flutter plugin for integrating Google Maps in iOS and Android applications.
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter
-version: 0.5.21+12
+version: 0.5.21+13
 
 dependencies:
   flutter: