flutter的jsbridge用webview_flutter怎么做
时间: 2024-10-26 10:01:05 浏览: 51
在Flutter中,通过`webview_flutter`库可以实现JavaScriptBridge,也就是通常所说的WebView与原生应用之间的通信。这是一种常见的技术,用于允许前端JavaScript控制或获取原生平台的功能。
以下是使用`webview_flutter`建立JavaScriptBridge的基本步骤:
1. **添加依赖**:
首先,在`pubspec.yaml`中添加`webview_flutter`插件:
```yaml
dependencies:
webview_flutter: ^2.0.15
```
2. **创建WebViewController**:
使用`WebViewController`,它是一个包装了`WebEngineView`的控制器,提供了一对一的API与JavaScript交互:
```dart
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebViewWithJSBridge extends StatefulWidget {
@override
_WebViewWithJSBridgeState createState() => _WebViewWithJSBridgeState();
}
class _WebViewWithJSBridgeState extends State<WebViewWithJSBridge> {
final String jsUrl = 'file:///android_asset/index.html'; // 或者网络地址
late WebViewController webView;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Web with JS Bridge')),
body: Container(
child: WebView(
initialUrl: jsUrl,
javascriptMode: JavascriptMode.unrestricted, // 允许执行任意JavaScript
onWebViewCreated: (controller) {
webView = controller;
// 注册JavaScriptBridge
webView.addJavascriptInterface(_jsBridgeObject, 'bridge');
},
// 其他配置...
),
),
);
}
// JavaScriptBridge对象
Object _jsBridgeObject = {
'sendToNative': (message) async {
// 在这里处理从JavaScript发送过来的消息
print('Received message from JS: $message');
}
};
}
```
3. **在JavaScript中调用**:
在HTML文件或者通过JavaScript代码中,你可以通过`window.bridge`对象来调用注册的函数:
```javascript
window.bridge.sendToNative("Hello Flutter!");
```
阅读全文