Flutter [webview_flutter] javascript通道如何与端口一起工作?

kokeuurv  于 2022-12-05  发布在  Flutter
关注(0)|答案(1)|浏览(164)

使用flutter插件:网页视图_flutter
从JS向webview_flutter发送数据的所有示例都具有类似的语法:
网页:

<script>
 toFlutter.postMessage('{"name":"Hello World"}');
</script>

Flutter:

javascriptChannels: { 
   JavascriptChannel( 
       name: 'toFlutter', 
       onMessageReceived: (message) async { 
           print('Javascript: "${message.message}"'); 
       }, 
   ), 
 },

这工作,除了...现在网页给我一个JS错误,如果在一个网页浏览器中查看。(阻止其他JS运行)
javascriptChannel的正确(javascript)语法如下所示:

<script>
 var toFlutter = new MessageChannel(); 
 toFlutter.port1.postMessage('{"name":"Hello World"}'); 
</script>

这在web浏览器中是有效的,但是现在webview_flutter当然不高兴了。
显然有办法解决这个问题,我只是问:我是否遗漏了文档中的某些内容?是否有办法在webview_flutter中同时指定通道名称和端口?

jw5wzhpr

jw5wzhpr1#

这篇文章应该是有帮助的:
https://medium.com/flutter-community/flutter-webview-javascript-communication-inappwebview-5-403088610949
简而言之:它展示了3种与JS代码通信的方法。其中一种使用消息通道,就像iFrames一样。
这样你就可以重用几乎相同的结构,形成你的html目标dart代码。

相关问题