flutter_webview_plugin与js互动

    最近在使用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显示在最上层,弹出窗口会显示不出来,这个还没有解决。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章