Android開發(fā)之Flutter與webview通信橋梁實現(xiàn)
前言
最近業(yè)務有需求需要在flutter內使用webview進行內嵌H5進行展示,此時需要涉及到H5與flutter之間額通信問題。比如發(fā)送消息或者H5調用Flutter的相機等等
webview選型
這里我們使用官方維護的插件webview_flutter
如何通信?
webview在初始化的時候需要向容器內注冊一個全局方法供H5進行調用
WebView(
initialUrl: 'https://flutter.dev',
javascriptMode: JavascriptMode.unrestricted,
javascriptChannels: <JavascriptChannel>{
_toasterJavascriptChannel(context),
}
....
....
)
JavascriptChannel _toasterJavascriptChannel(BuildContext context) {
return JavascriptChannel(
name: 'Toaster',//注冊一個名字為Toaster的全局js方法
onMessageReceived: (JavascriptMessage message) {
//處理業(yè)務的代碼邏輯
print(message)
});
}H5發(fā)送消息給flutter
H5發(fā)送消息采用xxxx.postMessage形式,注意這里對象需要JSON.stringify
Toaster.postMessage(
JSON.stringify({
name: 'tom',
age: 12
})
);flutter發(fā)送消息給H5
需要調用runJavascript方法,我們可以在H5中聲明一個全局windows方法
window.globalCallback = function (data) {
console.log(data)
};flutter發(fā)送采用runJavascript形式
WebViewController!.runJavascript('globalCallback(123)');//如果是對象也需要json.encode序列化以上就是Android開發(fā)之Flutter與webview通信橋梁實現(xiàn)的詳細內容,更多關于Android開發(fā)Flutter webview通信的資料請關注腳本之家其它相關文章!
相關文章
Android用Scroller實現(xiàn)一個可向上滑動的底部導航欄
本篇文章主要介紹了Android用Scroller實現(xiàn)一個可上滑的底部導航欄,具有一定的參考價值,有興趣的小伙伴們可以參考一下2017-07-07
Android WebView通過動態(tài)的修改js去攔截post請求參數(shù)實例
這篇文章主要介紹了Android WebView通過動態(tài)的修改js去攔截post請求參數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

