240 发简信
IP属地:广东
  • 不用这么麻烦啊,直接修改注入的js就可以实现的
    比如原来的代码:
    addJavascriptInterface(new MyJsInterface(this), "jsCallApp");
    MyJsInterface里面有getUserInfo和getDeviceInfo两个方法

    在flutter中js注入的时候可以这么写:
    controller.runJavascript('window.jsCallApp = {'
    'getUserInfo: function (data) {window.getUserInfo.postMessage(data);},'
    'getDeviceInfo: function (data) {window.getDeviceInfo.postMessage(data);}}');

    这样就可以直接使用flutter_webview自带的javascriptChannels了
    channels.add(JavascriptChannel(
    name:"getDeviceInfo",
    onMessageReceived: (JavascriptMessage message) {
    // 处理原来js方法getUserInfo
    }));

    channels.add(JavascriptChannel(
    name:"getUserInfo",
    onMessageReceived: (JavascriptMessage message) {
    // 处理原来js方法getUserInfo
    }));

    如果楼主有其他不引入第三方flutter插件的情况下也能解决这个问题的方法,麻烦告知下

    Flutter WebView 是否可以使用addJavascriptInterface?(完美实现)

    ----------接去年的那篇文章------------ 因为项目,我一直绕不过这个坑,最近又开始研究这个问题,之前的方法相当于自己重写Webview,通过Method...