赞
踩
webview_flutter 是官方维护的 WebView 插件,特性是基于原生和 Flutter SDK 封装,继承 StatefulWidget,因此支持内嵌于 Flutter Widget 树中,这是比较灵活的。但不支持https自制证书强制信任。
flutter_webview_plugin 则是基于原生 WebView 封装的 Flutter 插件,将原生的一些基本使用 API 封装好提供给 Flutter 调用,因此并不能内嵌于 Flutter Widget 树中,因此在界面的跳转必须得先释放掉,返回后又要重新初始化,所以显示会有很多限制性。
flutter_inappwebview 与其他WebView插件相比,它的功能 非常丰富:有很多事件 、 方法 和 选项 可以用来控制WebView。此外,前者没有提供很好的API文档,或者至少是文档不完整。相比之下, flutter_inappwebview 的每个特性几乎都有文档记录(可在pub.dev上查阅API参考)
github:https://github.com/pichillilorenzo/flutter_inappwebview
Dart sdk: ">=2.12.0-0 <3.0.0"
Flutter: ">=1.22.2"
Android: 最低SDK17和支持androidx (see AndroidX Migration to migrate an existing app)
iOS: --ios-language swift, Xcode version >= 12
如果需要运行一个flutter程序,需要在调用runApp()之前首先显式调用WidgetFlutTextbinding . EnsureInitialized(),保证inappwebview正常使用。
要允许自签名 SSL 证书,你可以使用 onReceivedServerTrustAuthRequest 事件,并在简单地返回后继续处理该请求,可以解决项目中Https服务器自制证书导致请求失败问题。
你可以与 JavaScript 端通信,反之亦然。要添加一个 JavaScript 处理程序,可以使用 webViewController.addJavaScriptHandler 方法,其中定义了 JavaScript 端调用时会激活的 handlerName和 callback 。 callback 可以返回要在 JavaScript 端发送的数据。
反之,在 JavaScript 端,要执行回调处理程序并向 Flutter 发送数据,需要使用 window.flutter_inappwebview.callHandler(handlerName ,…args) 方法,其中 handlerName 是一个字符串,表示调用的处理程序的名称, args 是可以发送到 Flutter 端的可选参数。
为了正确地调用 window.flutter_inappwebview.callHandler(handlerName <String>, ...args) ,你需要等待并监听 JavaScript 事件 flutterInAppWebViewPlatformReady 。平台(Android 或 iOS)一准备好处理 callHandler 方法,就会分派这个事件。
发现js回调方法,在android10及以上版本才好使
android10以下还是window.flutter_inappwebview.callHandler is not a function报错
以下是js的兼容方法,可以解决对调失败问题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。