【Flutter】webview
文章目录
- 前言
- 一、如何使用
前言
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 setJavaScriptMode(JavaScriptMode javaScriptMode); ///设置webview的背景色 Future setBackgroundColor(Color color); /// 当WebView的导航状态发生变化时会回调此方法,在此法中可以进行跳转拦截; /// 这里的 NavigationDecision.prevent表示阻止路由替换,NavigationDecision.navigate表示允许路由替换 Future setNavigationDelegate(NavigationDelegate delegate); ///加载一个URL /// uri:可以通过Uri.parse(url)来将url转成uri /// method:支持get请求和post请求两种,默认为get /// headers:发起url加载是携带的header信息,根据请求的网站要求进行传递 /// body:发起url请求是携带的body信息,可空 Future loadRequest( Uri uri, { LoadRequestMethod method = LoadRequestMethod.get, Map headers = const {}, Uint8List? body, }) ///设置WebView 是否应支持使用其屏幕缩放控件和手势进行缩放,默认支持; Future enableZoom(bool enabled); ///用于设置HTTP User-Agent: 请求标头的值 Future setUserAgent(String? userAgent); ///返回此 WebView 的历史记录。 /// 如果没有返回历史记录项,则这是一个无操作。 Future goBack(); /// 返回 WebView 正在显示的当前 URL。 /// 如果没有加载过 URL,则返回 `null`。 Future currentUrl(); ///运行JS代码,javaScript,要运行的JS代码 Future runJavaScript(String javaScript); /// 运行JS代码并接收运行结果 /// javaScriptString:要运行的JS代码 /// 返回:JS运行的结果 Future runJavaScriptReturningResult(String javaScript); /// 重新加载当前URL Future reload(); /// 判断是否可以返回历史记录的上一页 Future canGoBack(); /// 返回历史记录的上一页 Future goBack(); /// 判断是否可以去往历史记录的下一页 Future canGoForward(); ///跳转到历史记录的下一页 Future goForward();
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理!
部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!