news 2026/7/9 5:27:33

Flutter中,html 与 dart 桥接沟通

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flutter中,html 与 dart 桥接沟通
  • flutter_inappwebview

webview_flutter

dart 调用 html 方法

dart

其实就是dart向html发送消息,使用webViewController.runJavaScript方法,执行一段js脚本。

// 使用 postMessage 发送 webViewController.runJavaScript(''' window.postMessage($message, '*'); ''');

若为map,需要先转换为json字符串,避免引号冲突。

html

const handleMessage = (event: MessageEvent) => { const data = event.data // 解析消息内容... } // 添加窗口消息监听器 window.addEventListener('message', handleMessage)

html 调用 dart 方法

dart

通过JavaScriptChannel,来实现监听html发送的消息的功能。
先向页面添加JavaScriptChannel

//添加 JavaScript 通道用于接收 H5 消息 webViewController.addJavaScriptChannel('FlutterChannel', onMessageReceived: (JavaScriptMessage message) { handleH5Message(message.message); // 这就是处理html发送的消息的方法 });

html

这里的FlutterChannel是在dart端通过addJavaScriptChannel方法添加的,在网页端不需要声明。

// 使用 FlutterChannel 通道发送消息(匹配 Flutter 端的 JavaScriptChannel) try { if ((window as any).FlutterChannel) { (window as any).FlutterChannel.postMessage(JSON.stringify(message)) console.log('通过 FlutterChannel 发送消息到 Flutter:', message) } else { console.warn('FlutterChannel 未定义,无法发送消息到 Flutter') } } catch (error) { console.error('发送到 Flutter 失败:', error) }

flutter_inappwebview

dart 调用 html 方法

dart

其实就是dart向html发送消息,使用webViewController.evaluateJavascript方法,执行一段js脚本。

// 使用 postMessage 发送 webViewController?.evaluateJavascript( source: "window.postMessage($value, '*');", );

若为map,需要先转换为json字符串,避免引号冲突。

html

const handleMessage = (event: MessageEvent) => { const data = event.data // 解析消息内容... } // 添加窗口消息监听器 window.addEventListener('message', handleMessage)

html 调用 dart 方法

dart

通过JavaScriptChannel,来实现监听html发送的消息的功能。
先向页面添加JavaScriptChannel

// 添加 JavaScript Handler 用于接收 H5 消息 webViewController!.addJavaScriptHandler( handlerName: 'FlutterChannel', // <--- 这个需要和 html 中的 handlerName 一致 callback: (message) { if (message.isEmpty) { return; } handleH5Message(message[0]); }, );

html

这里的FlutterChannel是在dart端通过addJavaScriptChannel方法添加的,在网页端不需要声明。

// 使用 flutter_inappwebview 通道发送消息(匹配 Flutter 端的 JavaScriptChannel) try { if ((window as any).flutter_inappwebview) { // 调用 Dart 端的 handlerName 并发送数据 (window as any).flutter_inappwebview.callHandler('FlutterChannel', message) console.log('use flutter_inappwebview send to Flutter:', message) } else { console.warn('flutter_inappwebview undefine') } } catch (error) { console.error('Send to Flutter failed: ', error) }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 5:27:23

怎么把TMGM 纯净版 MT5 图表调得既高级又好看啊?

说实话&#xff0c;刚装好软件的时候&#xff0c;那默认的黑底绿条界面真的挺让人头大的&#xff0c;看久了眼睛生疼。其实这软件的界面完全可以自己定制。今天教大家几个小技巧&#xff0c;把你的TMGM 纯净版 MT5 &#xff08;mt5-get.com&#xff09;图表打造成最舒服的视觉风…

作者头像 李华
网站建设 2026/7/9 5:26:57

WarcraftHelper:魔兽争霸3终极增强插件,完美解决兼容性问题

WarcraftHelper&#xff1a;魔兽争霸3终极增强插件&#xff0c;完美解决兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典魔兽争霸…

作者头像 李华
网站建设 2026/7/9 5:24:41

应用AR远程指导,推动企业高效协作新模式

在数字化浪潮席卷全球的今天&#xff0c;企业间的竞争早已从单纯的产品比拼转向效率与创新的较量。为了在激烈的市场环境中保持竞争优势&#xff0c;越来越多的企业选择借助新兴技术实现转型。其中&#xff0c;AR技术凭借其沉浸式、可视化和交互性强的特点&#xff0c;正成为企…

作者头像 李华