最近在使用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顯示在最上層,彈出窗口會顯示不出來,這個還沒有解決。