基于官方 webview_flutter 插件的通信方式
在 pubspec.yaml 中添加
添加 webview 包方便后面使用,记得 pub get 更新。
dependencies:
flutter: sdk: flutter # 移动端 WebView 通信核心依赖
webview_flutter: ^4.4.4 # Web 平台 JS 通信依赖
js: ^0.6.7
配置自己使用的 js 路径地址信息,该地址位于项目根目录中添加对应 js 文件。
flutter:
uses-material-design: true
assets:
- assets/js/xxx.js
静态 js 文件,建立通道
function test() {
if (window.FlutterJsChannel) {
window.FlutterJsChannel.postMessage(realTimeData);
console.log(realTimeData);
console.log("【JS 推送成功】:数据已发送给 Flutter");
} else {
console.log("【JS 推送失败】:FlutterJsChannel 不存在");
}
}
postMessage 通道的核心概念:
- postMessage 本质是 Flutter 为 WebView 提供的跨端通信接口,专门用于 JavaScript → Flutter 的数据传递(单向主动推送)。
- Flutter 在 WebView 里'预埋'了一个名为 FlutterJsChannel(你自定义的名称)的'消息信箱'。
- JS 端只要往这个'信箱'里丢消息(调用 postMessage),Flutter 端的 onMessageReceived 回调就会立刻收到并处理。
- WebView 加载的 HTML/JS 中,通过
window.通道名称.postMessage(数据)发送消息。


