[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);
});