马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
前言
webview_flutter是Flutter官方推出的一款用于Flutter上的webview插件,该插件在 iOS 用的是WKWebView 支持; 在 Android 上用的是体系WebView。
插件所在:https://pub.dev/packages/webview_flutter
一、怎样利用
第一步:在项目根目录下运行如下下令配置依靠
flutter pub add webview_flutter
第二步:导入
在需要利用WebView的页面添加:
import ‘package:webview_flutter/webview_flutter.dart’;
第三步:初始化一个WebViewController
- @override
- void initState() {
- super.initState();
- _initWebViewController();
- }
- void _initWebViewController() {
- controller = WebViewController()
- ..setJavaScriptMode(JavaScriptMode.unrestricted)
- ..setBackgroundColor(const Color(0x00000000))
- ..setNavigationDelegate(
- NavigationDelegate(
- onProgress: (int progress) {
- // Update loading bar.
- },
- onPageStarted: (String url) {},
- onPageFinished: (String url) {
- //页面加载完成后才能执行js
- _handleBackForbid();
- },
- onWebResourceError: (WebResourceError error) {},
- onNavigationRequest: (NavigationRequest request) {
- return NavigationDecision.navigate;
- },
- ),
- )
- ..loadRequest(Uri.parse('https://www.geekailab.com'));
- }
-
复制代码 第四步:将WebViewController通报给WebViewWidget
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(title: const Text('Flutter Simple Example')),
- body: WebViewWidget(controller: controller),
- );
- }
复制代码 API阐明
WebViewController提供的API
- ///是否启用JavaScript执行,默认不启用
- Future<void> setJavaScriptMode(JavaScriptMode javaScriptMode);
- ///设置webview的背景色
- Future<void> setBackgroundColor(Color color);
- /// 当WebView的导航状态发生变化时会回调此方法,在此法中可以进行跳转拦截;
- /// 这里的 NavigationDecision.prevent表示阻止路由替换,NavigationDecision.navigate表示允许路由替换
- Future<void> setNavigationDelegate(NavigationDelegate delegate);
- ///加载一个URL
- /// uri:可以通过Uri.parse(url)来将url转成uri
- /// method:支持get请求和post请求两种,默认为get
- /// headers:发起url加载是携带的header信息,根据请求的网站要求进行传递
- /// body:发起url请求是携带的body信息,可空
- Future<void> loadRequest(
- Uri uri, {
- LoadRequestMethod method = LoadRequestMethod.get,
- Map<String, String> headers = const <String, String>{},
- Uint8List? body,
- })
- ///设置WebView 是否应支持使用其屏幕缩放控件和手势进行缩放,默认支持;
- Future<void> enableZoom(bool enabled);
- ///用于设置HTTP User-Agent: 请求标头的值
- Future<void> setUserAgent(String? userAgent);
- ///返回此 WebView 的历史记录。
- /// 如果没有返回历史记录项,则这是一个无操作。
- Future<void> goBack();
- /// 返回 WebView 正在显示的当前 URL。
- /// 如果没有加载过 URL,则返回 `null`。
- Future<String?> currentUrl();
- ///运行JS代码,javaScript,要运行的JS代码
- Future<void> runJavaScript(String javaScript);
- /// 运行JS代码并接收运行结果
- /// javaScriptString:要运行的JS代码
- /// 返回:JS运行的结果
- Future<Object> runJavaScriptReturningResult(String javaScript);
- /// 重新加载当前URL
- Future<void> reload();
- /// 判断是否可以返回历史记录的上一页
- Future<bool> canGoBack();
- /// 返回历史记录的上一页
- Future<void> goBack();
- /// 判断是否可以去往历史记录的下一页
- Future<bool> canGoForward();
- ///跳转到历史记录的下一页
- Future<void> goForward();
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |