From 2d66f30e582586cafe16fbd25ebea28c955c75b2 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 28 Dec 2022 14:26:04 -0500 Subject: [PATCH] [webview_flutter_web] Adds auto registration of the `WebViewPlatform` implementation (#6886) * Adss auto reg * test for registration * update readme --- .../webview_flutter_web/CHANGELOG.md | 4 ++ .../webview_flutter_web/README.md | 55 +------------------ .../lib/src/web_webview_platform.dart | 4 +- .../webview_flutter_web/pubspec.yaml | 2 +- .../test/webview_flutter_web_test.dart | 17 ++++++ 5 files changed, 26 insertions(+), 56 deletions(-) create mode 100644 packages/webview_flutter/webview_flutter_web/test/webview_flutter_web_test.dart diff --git a/packages/webview_flutter/webview_flutter_web/CHANGELOG.md b/packages/webview_flutter/webview_flutter_web/CHANGELOG.md index 3b2c0212042a..19d7a1c48181 100644 --- a/packages/webview_flutter/webview_flutter_web/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1 + +* Adds auto registration of the `WebViewPlatform` implementation. + ## 0.2.0 * **BREAKING CHANGE** Updates platform implementation to `2.0.0` release of diff --git a/packages/webview_flutter/webview_flutter_web/README.md b/packages/webview_flutter/webview_flutter_web/README.md index dcd1410f42c7..51a0223696d0 100644 --- a/packages/webview_flutter/webview_flutter_web/README.md +++ b/packages/webview_flutter/webview_flutter_web/README.md @@ -18,59 +18,6 @@ yet, so it currently requires extra setup to use: * [Add this package](https://pub.dev/packages/webview_flutter_web/install) as an explicit dependency of your project, in addition to depending on `webview_flutter`. -* Register `WebWebViewPlatform` as the `WebViewPlatform.instance` before creating a - `WebView`. See below for examples. -Once those steps below are complete, the APIs from `webview_flutter` listed +Once the step above is complete, the APIs from `webview_flutter` listed above can be used as normal on web. - -### Registering the implementation - -Before creating a `WebView` (for instance, at the start of `main`), you will -need to register the web implementation. - -#### Web-only project example - -```dart -... -import 'package:webview_flutter/webview_flutter.dart'; -import 'package:webview_flutter_web/webview_flutter_web.dart'; - -main() { - WebViewPlatform.instance = WebWebViewPlatform(); - ... -``` - -#### Multi-platform project example - -If your project supports platforms other than web, you will need to use a -conditional import to avoid directly including `webview_flutter_web.dart` on -non-web platforms. For example: - -`register_web_webview.dart`: -```dart -import 'package:webview_flutter/webview_flutter.dart'; -import 'package:webview_flutter_web/webview_flutter_web.dart'; - -void registerWebViewWebImplementation() { - WebViewPlatform.instance = WebWebViewPlatform(); -} -``` - -`register_web_webview_stub.dart`: -```dart -void registerWebViewWebImplementation() { - // No-op. -} -``` - -`main.dart`: -```dart -... -import 'register_web_webview_stub.dart' - if (dart.library.html) 'register_web.dart'; - -main() { - registerWebViewWebImplementation(); - ... -``` diff --git a/packages/webview_flutter/webview_flutter_web/lib/src/web_webview_platform.dart b/packages/webview_flutter/webview_flutter_web/lib/src/web_webview_platform.dart index 2624832514cd..a5afc2bc4189 100644 --- a/packages/webview_flutter/webview_flutter_web/lib/src/web_webview_platform.dart +++ b/packages/webview_flutter/webview_flutter_web/lib/src/web_webview_platform.dart @@ -24,5 +24,7 @@ class WebWebViewPlatform extends WebViewPlatform { } /// Gets called when the plugin is registered. - static void registerWith(Registrar registrar) {} + static void registerWith(Registrar registrar) { + WebViewPlatform.instance = WebWebViewPlatform(); + } } diff --git a/packages/webview_flutter/webview_flutter_web/pubspec.yaml b/packages/webview_flutter/webview_flutter_web/pubspec.yaml index 10f06801e805..99ff3d95f269 100644 --- a/packages/webview_flutter/webview_flutter_web/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_web/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter_web description: A Flutter plugin that provides a WebView widget on web. repository: https://github.com/flutter/plugins/tree/main/packages/webview_flutter/webview_flutter_web issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 0.2.0 +version: 0.2.1 environment: sdk: ">=2.14.0 <3.0.0" diff --git a/packages/webview_flutter/webview_flutter_web/test/webview_flutter_web_test.dart b/packages/webview_flutter/webview_flutter_web/test/webview_flutter_web_test.dart new file mode 100644 index 000000000000..dbfaf22faa54 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_web/test/webview_flutter_web_test.dart @@ -0,0 +1,17 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter_test/flutter_test.dart'; +import 'package:flutter_web_plugins/flutter_web_plugins.dart'; +import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; +import 'package:webview_flutter_web/webview_flutter_web.dart'; + +void main() { + group('WebWebViewPlatform', () { + test('registerWith', () { + WebWebViewPlatform.registerWith(Registrar()); + expect(WebViewPlatform.instance, isA()); + }); + }); +}