flutter_webview_plugin与js互动

本文分享了在使用Flutter的WebView组件遇到的问题及解决方案。在安卓4.4(API19)设备上,webview_flutter存在兼容性问题,作者转向使用flutter_webview_plugin,并实现了Flutter与JS之间的交互功能。文章还探讨了JS调用Flutter的限制,如不能直接使用setState,以及WebView显示层级导致的弹窗遮挡问题。

    最近在使用webview_flutter做安卓的浏览器功能,在测试手机模拟器(安卓5.0)一切正常,但拿去现场生产设备(安卓4.4 API19),运行有误。发现webview_flutter支持API19有误,只能更换flutter_webview_plugin试试,一切正常。把原来的JS互动的功能转化:

//flutter调用js
final flutterWebViewPlugin = FlutterWebviewPlugin();
final future =flutterWebViewPlugin.evalJavascript("SCANRsult('"+barcode+"')");
      future.then((String result) {
        print('调用js后的返回值...');
      });




_showWEbview() {
    return WebviewScaffold(
      url: url,
      javascriptChannels: jsChannels,
      withZoom: false, 
      withLocalStorage: true,
      withJavascript: true, 
    );
  }


//这里是js调用flutter
final Set<JavascriptChannel> jsChannels = [
    JavascriptChannel(
        name: 'SetAppTitle6',
        onMessageReceived: (JavascriptMessage message) {
          print(message.message);
        }),
    JavascriptChannel(
        name: 'ScanBarcode',
        onMessageReceived: (JavascriptMessage message) {
          print(message.message);          
        }),
  ].toSet();


//这里是网页调用JS,在html里面
if(window.hasOwnProperty('SetAppTitle6')){
          window.SetAppTitle.postMessage("动态设置标题");  
      }   

这里有两个问题:

1)在js调用flutter里面不能直接使用setState设置内容 ,本人使用even_bus设置

2) webview显示在最上层,弹出窗口会显示不出来,这个还没有解决。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weijia3624

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值