Flutter postMessages无法在Android模拟器上运行

plupiseo  于 2022-12-24  发布在  Flutter
关注(0)|答案(1)|浏览(158)

我正在使用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消息。

lndjwyie

lndjwyie1#

我们也在这个问题上兜圈子,尽管Android上的WebView应该支持window.postMessage()的全部参数,但它在定义目标来源时会抛出错误。
试试

postMessage.postMessage(JSON.stringify(obj));

对于其他陷入困境的人来说也是如此--您必须确保发送的数据是字符串,尽管似乎应该支持其他格式--似乎只有字符串才能可靠地发送。
您也可以尝试一下https://pub.dev/packages/flutter_inappwebview包,这是一个更强大一点。

相关问题