flutter 调用js 方法
时间: 2023-11-02 14:03:11 浏览: 183
Flutter 可以通过 `flutter_webview_plugin` 插件来调用 WebView 中的 JavaScript 方法。
首先,在 Flutter 中引入 `flutter_webview_plugin` 插件:
```dart
dependencies:
flutter_webview_plugin: ^0.3.5+1
```
然后在需要使用 WebView 的页面中,导入插件并创建 WebView:
```dart
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
class WebViewPage extends StatefulWidget {
@override
_WebViewPageState createState() => _WebViewPageState();
}
class _WebViewPageState extends State<WebViewPage> {
FlutterWebviewPlugin flutterWebviewPlugin = FlutterWebviewPlugin();
String url = 'https://www.example.com';
@override
Widget build(BuildContext context) {
return WebviewScaffold(
url: url,
withJavascript: true,
);
}
}
```
在 `WebviewScaffold` 中设置 `withJavascript` 为 `true`,表示开启 WebView 中的 JavaScript 功能。
接下来,可以通过 `evaluateJavascript` 方法来调用 WebView 中的 JavaScript 方法,例如:
```dart
flutterWebviewPlugin.evalJavascript('window.alert("Hello, world!")');
```
这里调用了 JavaScript 中的 `alert` 方法,弹出一个提示框。
完整的示例代码如下:
```dart
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
class WebViewPage extends StatefulWidget {
@override
_WebViewPageState createState() => _WebViewPageState();
}
class _WebViewPageState extends State<WebViewPage> {
FlutterWebviewPlugin flutterWebviewPlugin = FlutterWebviewPlugin();
String url = 'https://www.example.com';
@override
void initState() {
super.initState();
flutterWebviewPlugin.onStateChanged.listen((WebViewStateChanged state) {
print('onStateChanged: ${state.type} ${state.url}');
});
}
@override
Widget build(BuildContext context) {
return WebviewScaffold(
url: url,
withJavascript: true,
appBar: AppBar(
title: Text('WebView'),
),
bottomNavigationBar: BottomAppBar(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () {
flutterWebviewPlugin.goBack();
},
),
IconButton(
icon: Icon(Icons.arrow_forward),
onPressed: () {
flutterWebviewPlugin.goForward();
},
),
IconButton(
icon: Icon(Icons.refresh),
onPressed: () {
flutterWebviewPlugin.reload();
},
),
IconButton(
icon: Icon(Icons.info),
onPressed: () {
flutterWebviewPlugin.evalJavascript('window.alert("Hello, world!")');
},
),
],
),
),
);
}
}
```
在底部导航栏中添加了返回、前进、刷新和弹出提示框的按钮,点击弹出提示框时会调用 JavaScript 中的 `alert` 方法。
阅读全文