flutter webview_flutter 的坑

单于庆
2023-12-01

webview_flutter

官方例子:

 import 'dart:io';

 import 'package:webview_flutter/webview_flutter.dart';

 class WebViewExample extends StatefulWidget {
   @override
   WebViewExampleState createState() => WebViewExampleState();
 }

 class WebViewExampleState extends State<WebViewExample> {
   @override
   void initState() {
     super.initState();
     // Enable virtual display.
     if (Platform.isAndroid) WebView.platform = AndroidWebView();
   }

   @override
   Widget build(BuildContext context) {
     return WebView(
       initialUrl: 'https://flutter.dev',
     );
   }
 }

这个例子WebView只填了initialUrl

坑1、WebView的javascriptMode默认是JavascriptMode.disabled

既然是网页,怎么会少得了js,还默认是禁用状态。不友好设计!!!
所以WebView的加上JavascriptMode.unrestricted才能跑起来,不然会显示noscript标签的内容

WebView(
  javascriptMode: JavascriptMode.unrestricted,  // unrestricted: 无限制,disabled:禁用,这是默认状态
  initialUrl: widget.url,
)
坑2、需要设置网络权限,不然会出现web page not avaliable

/android/app/src/main/AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>

坑3、if (Platform.isAndroid) WebView.platform = AndroidWebView();键盘弹不出来

需要改成if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();

 类似资料: