不用这么麻烦啊,直接修改注入的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...