作者:beilei_beike_516 | 来源:互联网 | 2022-11-25 20:52
我有一个使用flutter_webview_plugin在Flutter Webview中加载的html文件。我正在使用evalJavascript在我的Javascript代码中调用函数,这意味着flutter(dart)-> js。但是,我还需要某种方法将某些内容传达回flutter(dart)层,这意味着js-> flutter(dart)。
我尝试使用-webkit.messageHandlers.native-window.native来支持两个平台(Android,iOS),检查它们是否在JS中可用。但是,这些是不确定的。使用以下代码获取JS中本机处理程序的实例。
typeof webkit !== 'undefined' ? webkit.messageHandlers.native :
window.native;
即使我得到该实例并使用它发布消息,也不确定如何在flutter(dart)层中处理它。我可能需要使用平台渠道。不确定,如果我的方向正确。
有什么办法可以做到这一点?我已经评估了Interactive_webview插件。它在Android上运行良好。但是,它具有快速的版本控制问题,因此不希望进一步进行。
任何帮助,将不胜感激。
1> Suresh Kumar..:
Here is an example of communication from Javascript code to flutter.
In Flutter build your WebView like :
WebView(
initialUrl: url,
JavascriptMode: JavascriptMode.unrestricted,
JavascriptChannels: Set.from([
JavascriptChannel(
name: 'Print',
onMessageReceived: (JavascriptMessage message) {
//This is where you receive message from
//Javascript code and handle in Flutter/Dart
//like here, the message is just being printed
//in Run/LogCat window of android studio
print(message.message);
})
]),
onWebViewCreated: (WebViewController w) {
webViewCOntroller= w;
},
)
and in Your HTMLfile:
When you run this code, you shall be able to see log "Hello World being called from Javascript code" in the LogCat/Run window of android studio.