[webview_flutter] Fix pedantic lint errors (#2322)

diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md
index e577b30..c90205d 100644
--- a/packages/webview_flutter/CHANGELOG.md
+++ b/packages/webview_flutter/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.3.17
+
+* Fix pedantic lint errors. Added missing documentation and awaited some futures
+  in tests and the example app.
+
 ## 0.3.16
 
 * Add support for async NavigationDelegates. Synchronous NavigationDelegates
diff --git a/packages/webview_flutter/analysis_options.yaml b/packages/webview_flutter/analysis_options.yaml
deleted file mode 100644
index d4ccef6..0000000
--- a/packages/webview_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/webview_flutter/example/lib/main.dart b/packages/webview_flutter/example/lib/main.dart
index 5f3e0f8..4016e10 100644
--- a/packages/webview_flutter/example/lib/main.dart
+++ b/packages/webview_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 'dart:async';
 import 'dart:convert';
 import 'package:flutter/material.dart';
@@ -194,7 +196,7 @@
       WebViewController controller, BuildContext context) async {
     // Send a message with the user agent string to the Toaster JavaScript channel we registered
     // with the WebView.
-    controller.evaluateJavascript(
+    await controller.evaluateJavascript(
         'Toaster.postMessage("User Agent: " + navigator.userAgent);');
   }
 
@@ -250,7 +252,7 @@
       WebViewController controller, BuildContext context) async {
     final String contentBase64 =
         base64Encode(const Utf8Encoder().convert(kNavigationExamplePage));
-    controller.loadUrl('data:text/html;base64,$contentBase64');
+    await controller.loadUrl('data:text/html;base64,$contentBase64');
   }
 
   Widget _getCookieList(String cookies) {
@@ -291,7 +293,7 @@
                   ? null
                   : () async {
                       if (await controller.canGoBack()) {
-                        controller.goBack();
+                        await controller.goBack();
                       } else {
                         Scaffold.of(context).showSnackBar(
                           const SnackBar(content: Text("No back history item")),
@@ -306,7 +308,7 @@
                   ? null
                   : () async {
                       if (await controller.canGoForward()) {
-                        controller.goForward();
+                        await controller.goForward();
                       } else {
                         Scaffold.of(context).showSnackBar(
                           const SnackBar(
diff --git a/packages/webview_flutter/example/test_driver/webview_flutter_e2e_test.dart b/packages/webview_flutter/example/test_driver/webview_flutter_e2e_test.dart
index 2e5c27f..ccd7166 100644
--- a/packages/webview_flutter/example/test_driver/webview_flutter_e2e_test.dart
+++ b/packages/webview_flutter/example/test_driver/webview_flutter_e2e_test.dart
@@ -11,6 +11,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/webview_flutter/lib/platform_interface.dart b/packages/webview_flutter/lib/platform_interface.dart
index cf6a2fd..3646869 100644
--- a/packages/webview_flutter/lib/platform_interface.dart
+++ b/packages/webview_flutter/lib/platform_interface.dart
@@ -220,6 +220,10 @@
 ///
 /// The `userAgent` parameter must not be null.
 class WebSettings {
+  /// Construct an instance with initial settings. Future setting changes can be
+  /// sent with [WebviewPlatform#updateSettings].
+  ///
+  /// The `userAgent` parameter must not be null.
   WebSettings({
     this.javascriptMode,
     this.hasNavigationDelegate,
@@ -258,6 +262,10 @@
 ///
 /// The `autoMediaPlaybackPolicy` parameter must not be null.
 class CreationParams {
+  /// Constructs an instance to use when creating a new
+  /// [WebViewPlatformController].
+  ///
+  /// The `autoMediaPlaybackPolicy` parameter must not be null.
   CreationParams({
     this.initialUrl,
     this.webSettings,
diff --git a/packages/webview_flutter/lib/src/webview_method_channel.dart b/packages/webview_flutter/lib/src/webview_method_channel.dart
index 2bb7470..ba5b958 100644
--- a/packages/webview_flutter/lib/src/webview_method_channel.dart
+++ b/packages/webview_flutter/lib/src/webview_method_channel.dart
@@ -10,6 +10,8 @@
 
 /// A [WebViewPlatformController] that uses a method channel to control the webview.
 class MethodChannelWebViewPlatform implements WebViewPlatformController {
+  /// Constructs an instance that will listen for webviews broadcasting to the
+  /// given [id], using the given [WebViewPlatformCallbacksHandler].
   MethodChannelWebViewPlatform(int id, this._platformCallbacksHandler)
       : assert(_platformCallbacksHandler != null),
         _channel = MethodChannel('plugins.flutter.io/webview_$id') {
diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart
index 11541d3..c17f8b9 100644
--- a/packages/webview_flutter/lib/webview_flutter.dart
+++ b/packages/webview_flutter/lib/webview_flutter.dart
@@ -12,8 +12,11 @@
 import 'src/webview_android.dart';
 import 'src/webview_cupertino.dart';
 
+/// Optional callback invoked when a web view is first created. [controller] is
+/// the [WebViewController] for the created web view.
 typedef void WebViewCreatedCallback(WebViewController controller);
 
+/// Describes the state of JavaScript support in a given web view.
 enum JavascriptMode {
   /// JavaScript execution is disabled.
   disabled,
@@ -589,10 +592,11 @@
     final Set<String> channelsToRemove =
         currentChannels.difference(newChannelNames);
     if (channelsToRemove.isNotEmpty) {
-      _webViewPlatformController.removeJavascriptChannels(channelsToRemove);
+      await _webViewPlatformController
+          .removeJavascriptChannels(channelsToRemove);
     }
     if (channelsToAdd.isNotEmpty) {
-      _webViewPlatformController.addJavascriptChannels(channelsToAdd);
+      await _webViewPlatformController.addJavascriptChannels(channelsToAdd);
     }
     _platformCallbacksHandler._updateJavascriptChannelsFromSet(newChannels);
   }
diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml
index 4883f04..236d591 100644
--- a/packages/webview_flutter/pubspec.yaml
+++ b/packages/webview_flutter/pubspec.yaml
@@ -1,6 +1,6 @@
 name: webview_flutter
 description: A Flutter plugin that provides a WebView widget on Android and iOS.
-version: 0.3.16
+version: 0.3.17
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter
 
diff --git a/packages/webview_flutter/test/webview_flutter_test.dart b/packages/webview_flutter/test/webview_flutter_test.dart
index 5184ddd..728686f 100644
--- a/packages/webview_flutter/test/webview_flutter_test.dart
+++ b/packages/webview_flutter/test/webview_flutter_test.dart
@@ -83,7 +83,7 @@
 
     expect(controller, isNotNull);
 
-    controller.loadUrl('https://flutter.io');
+    await controller.loadUrl('https://flutter.io');
 
     expect(await controller.currentUrl(), 'https://flutter.io');
   });
@@ -272,11 +272,11 @@
 
     expect(await controller.currentUrl(), 'https://youtube.com');
 
-    controller.loadUrl('https://flutter.io');
+    await controller.loadUrl('https://flutter.io');
 
     expect(await controller.currentUrl(), 'https://flutter.io');
 
-    controller.goBack();
+    await controller.goBack();
 
     expect(await controller.currentUrl(), 'https://youtube.com');
   });
@@ -296,15 +296,15 @@
 
     expect(await controller.currentUrl(), 'https://youtube.com');
 
-    controller.loadUrl('https://flutter.io');
+    await controller.loadUrl('https://flutter.io');
 
     expect(await controller.currentUrl(), 'https://flutter.io');
 
-    controller.goBack();
+    await controller.goBack();
 
     expect(await controller.currentUrl(), 'https://youtube.com');
 
-    controller.goForward();
+    await controller.goForward();
 
     expect(await controller.currentUrl(), 'https://flutter.io');
   });
@@ -324,13 +324,13 @@
     // Test a WebView without an explicitly set first URL.
     expect(await controller.currentUrl(), isNull);
 
-    controller.loadUrl('https://youtube.com');
+    await controller.loadUrl('https://youtube.com');
     expect(await controller.currentUrl(), 'https://youtube.com');
 
-    controller.loadUrl('https://flutter.io');
+    await controller.loadUrl('https://flutter.io');
     expect(await controller.currentUrl(), 'https://flutter.io');
 
-    controller.goBack();
+    await controller.goBack();
     expect(await controller.currentUrl(), 'https://youtube.com');
   });
 
@@ -351,12 +351,12 @@
     expect(platformWebView.currentUrl, 'https://flutter.io');
     expect(platformWebView.amountOfReloadsOnCurrentUrl, 0);
 
-    controller.reload();
+    await controller.reload();
 
     expect(platformWebView.currentUrl, 'https://flutter.io');
     expect(platformWebView.amountOfReloadsOnCurrentUrl, 1);
 
-    controller.loadUrl('https://youtube.com');
+    await controller.loadUrl('https://youtube.com');
 
     expect(platformWebView.amountOfReloadsOnCurrentUrl, 0);
   });