我正在使用flutter webview_flutter
lib开发一个webview应用程序。当我在IOS上发送postMessages时,它工作正常,但在Android模拟器上测试时,终端在执行postMessage.postMessage(JSON.stringify(obj), "*");
函数时打印错误消息Uncaught Error: Method not found
。
下面是我的webview代码:
WebView(
javascriptMode: JavascriptMode.unrestricted,
debuggingEnabled: true,
initialUrl: '<url_to_my_template>',
onPageStarted: (url) {},
onPageFinished: (url) async {},
javascriptChannels: <JavascriptChannel>{
JavascriptChannel(
name: 'postMessage',
onMessageReceived: (message) async {
print('postMessage: ${message.message}');
},
),
},
onWebViewCreated: (WebViewController controller) {
setState(() {
_controller = controller;
});
},
),
这是我的js文件:
function troca_dados_envia(obj){
"use strict";
//Flutter
postMessage.postMessage(JSON.stringify(obj), "*");
}
我尝试了上面的代码,我希望在Android和IOS设备上都能工作,但结果发现只有IOS设备才能监听和发送post消息。
1条答案
按热度按时间lndjwyie1#
我们也在这个问题上兜圈子,尽管Android上的WebView应该支持window.postMessage()的全部参数,但它在定义目标来源时会抛出错误。
试试
对于其他陷入困境的人来说也是如此--您必须确保发送的数据是字符串,尽管似乎应该支持其他格式--似乎只有字符串才能可靠地发送。
您也可以尝试一下https://pub.dev/packages/flutter_inappwebview包,这是一个更强大一点。