当前位置: 首页 > Web前端 > HTML

Flutter与webview沟通桥梁开发

时间:2023-03-28 16:25:40 HTML

最近有业务需求,需要在flutter中使用webview展示内嵌的H5。这个时候就需要涉及到H5和flutter的通信。比如发送消息或者H5调用Flutter的摄像头等。webview的选择这里我们使用官方维护的插件webview_flutter如何通信?webview在初始化的时候,需要在容器中注册一个全局方法供H5调用WebView(initialUrl:'https://flutter.dev',javascriptMode:JavascriptMode.unrestricted,javascriptChannels:{_toasterJavascriptChannel(context),}.......)JavascriptChannel_toasterJavascriptChannel(BuildContextcontext){returnJavascriptChannel(name:'Toaster',//注册一个名为Toaster的全局js方法onMessageReceived:(JavascriptMessagemessage){//处理业务的代码逻辑print(message)});}H5向flutter发送消息H5以xxxx.postMessage的形式发送消息,注意这里的对象需要JSON.stringifyToaster.postMessage(JSON.stringify({name:'tom',age:12}));flutter向H5发送消息需要调用runJavascript方法。我们可以在H5中声明一个全局的windows方法window.globalCallback=function(data){console.log(data)};flutter以runJavascript的形式发送给WebViewController!.runJavascript('globalCallback(123)');//如果是对象,还需要json.encode序列化