WebView for Flutter (Developers Preview) #
A Flutter plugin that provides a WebView widget.
Developers Preview Status #
The plugin relies on Flutter's new mechanism for embedding Android and iOS views. As that mechanism is currently in a developers preview, this plugin should also be considered a developers preview.
To use this plugin on iOS you need to opt-in for the embedded views preview by
adding a boolean property to the app's
Info.plist file, with the key
and the value
Keyboard support - not ready for production use #
Keyboard support within webviews is experimental. The Android version relies on some low-level knobs that have not been well tested on a broad spectrum of devices yet, and therefore it is not recommended to rely on webview keyboard in production apps yet. See the webview-keyboard for known issues with keyboard input.
Opt-in to the embedded views preview by adding a boolean property to the app's
with the key
io.flutter.embedded_views_preview and the value
webview_flutter as a dependency in your pubspec.yaml file.
You can now include a WebView widget in your widget tree. See the WebView widget's Dartdoc for more details on how to use the widget.
- On iOS, always keep contentInsets of the WebView to be 0.
- Fix XCTest case to follow XCTest naming convention.
- On iOS, fix the scroll view content inset is automatically adjusted. After the fix, the content position of the WebView is customizable by Flutter.
- Fix an iOS 13 bug where the scroll indicator shows at random location.
- Setup XCTests.
- Migrate from deprecated BinaryMessages to ServicesBinding.instance.defaultBinaryMessenger.
- Raise min Flutter SDK requirement to the latest stable. v2 embedding apps no longer need to special case their Flutter SDK requirement like they have since v0.3.15+3.
- Add setting for iOS to allow gesture based navigation.
- Be explicit that keyboard is not ready for production in README.md.
- Add support for onPageStarted event.
- Remove the deprecated
author:field from pubspec.yaml
- Migrate to the new pubspec platforms manifest.
- Require Flutter SDK 1.10.0 or greater.
- Fix pedantic lint errors. Added missing documentation and awaited some futures in tests and the example app.
- Add support for async NavigationDelegates. Synchronous NavigationDelegates should still continue to function without any change in behavior.
- Re-land support for the v2 Android embedding. This correctly sets the minimum SDK to the latest stable and avoid any compile errors. WARNING: the V2 embedding itself still requires the current Flutter master channel (flutter/flutter@1d4d63a) for text input to work properly on all Android versions.
- Remove AndroidX warnings.
- Revert the prior embedding support add since it requires an API that hasn't rolled to stable.
- Add support for the v2 Android embedding. This shouldn't affect existing functionality. Plugin authors who use the V2 embedding can now register the plugin and expect that it correctly responds to app lifecycle changes.
- Define clang module for iOS.
- Added a getTitle getter to WebViewController.
- Add an optional
userAgentproperty to set a custom User Agent.
- Temporarily revert getTitle (doing this as a patch bump shortly after publishing).
- Added a getTitle getter to WebViewController.
- Calling destroy on Android webview when flutter webview is getting disposed.
- Reduce compiler warnings regarding iOS9 compatibility by moving a single
method back into a
- Removed noisy log messages on iOS.
- Apply the display listeners workaround that was shipped in 0.3.11+1 on all Android versions prior to P.
- Add fix for input connection being dropped after a screen resize on certain Android devices.
- Work around a bug in old Android WebView versions that was causing a crash when resizing the webview on old devices.
- Add an initialAutoMediaPlaybackPolicy setting for controlling how auto media playback is restricted.
- Add dependency on
- Add keyboard text to README.
- Don't log an unknown setting key error for 'debuggingEnabled' on iOS.
- Fix InputConnection being lost when combined with route transitions.
- Add support for simultaenous Flutter
TextInputand WebView text fields.
- Add partial WebView keyboard support for Android versions prior to N. Support
for UIs that also have Flutter
TextInputfields is still pending. This basic support currently only works with Flutter
master. The keyboard will still appear when it previously did not when run with older versions of Flutter. But if the WebView is resized while showing the keyboard the text field will need to be focused multiple times for any input to be registered.
- Update Dart code to conform to current Dart formatter.
- Add missing template type parameter to
- Bump minimum Flutter version to 1.5.0.
- Replace invokeMethod with invokeMapMethod wherever necessary.
- Allow external packages to provide webview implementations for new platforms.
- Suppress deprecation warning for BinaryMessages. See: https://github.com/flutter/flutter/issues/33446
- Fix loadUrlWithHeaders flaky test.
- Remove un-used method params in webview_flutter
- Add an optional
headersfield to the controller.
- Fixed error in documentation of
- Fix bugs in the example app by updating it to use a
- Fix crash from
NavigationDelegateon later versions of Android.
- Fix a bug where updates to onPageFinished were ignored.
- Added an onPageFinished callback.
- Support specifying navigation delegates that can prevent navigations from being executed.
- Exclude LongPress handler from semantics tree since it does nothing.
- Fixed a memory leak on Android - the WebView was not properly disposed.
- Add clearCache method to WebView controller.
- Log a more detailed warning at build time about the previous AndroidX migration.
- Added CookieManager to interface with WebView cookies. Currently has the ability to clear cookies.
- Breaking change. Migrate from the deprecated original Android Support Library to AndroidX. This shouldn't result in any functional changes, but it requires any Android apps using this plugin to also migrate if they're using the original support library.
- (BREAKING CHANGE) Renamed the
- Added a reload method to the WebView controller.
- Added a
currentUrlaccessor for the WebView controller to look up what URL is being displayed.
- Fix null crash when initialUrl is unset on iOS.
- Add goBack, goForward, canGoBack, and canGoForward methods to the WebView controller.
- Fix case for "FLTWebViewFlutterPlugin" (iOS was failing to buld on case-sensitive file systems).
- Initial release.
Demonstrates how to use the webview_flutter plugin.
Getting Started #
For help getting started with Flutter, view our online documentation.
Use this package as a library
1. Depend on it
Add this to your package's pubspec.yaml file:
dependencies: webview_flutter: ^0.3.19+5
2. Install it
You can install packages from the command line:
$ flutter pub get
Alternatively, your editor might support
flutter pub get.
Check the docs for your editor to learn more.
3. Import it
Now in your Dart code, you can use:
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
We analyzed this package on Jan 21, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
- Dart: 2.7.0
- pana: 0.13.4
- Flutter: 1.12.13+hotfix.5