在Flutter中使用Webview打开网页

码字辛苦!转载请注明出处!

0.前言

因为众所周知的原因,谷歌和苹果都默认禁用了http明文协议,这本身是一件好事

糟糕的是,许多网站资源文件还是使用了http协议,这对于从安卓/ios转向flutter的开发者来说

——又是一个深坑

话不多说,我作为一个从安卓转向flutter的开发者,总结一下经验,希望能帮到和我一样深受其害的朋友

1.配置安卓http明文传输权限

我知道你在想什么,导入webview和使用的步骤在后面,但这里的准备工作没做好的话,开什么网页都只能看到白板~

打开flutter中的Android项目:/android/app/src/main/AndroidManifest.xml

找到<Application>标签,添加如下内容:


    <application
        ...
        
        添加这一行
        android:usesCleartextTraffic="true"
        
        ...>

2.配置ios http明文传输权限

打开flutter中的ios项目:/ios/Runner/Info.plist

添加如下内容:

	<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSAllowsArbitraryLoads</key>
		<true/>
	</dict>

3.清理缓存,停止app(!!!非常重要!!!

由于flutter的热重载机制,会导致上述修改不起作用,要让上述修改生效,需要执行以下两步:

1.如果app已经运行,需要点击ide上的停止按钮,杀死app,确保下次不会从热重载启动

2.使用命令行终端,进入项目根目录,执行以下命令清理缓存

flutter clean

执行完成后,代码会全红,别紧张,只不过清理掉了依赖库而已

4.引入webview_flutter库

在pub中添加依赖:

  webview_flutter: ^2.0.8

5.重新下载依赖

执行以下命令

flutter pub get

抄作业:

以下是一个超级简单的webview demo,你也可以按webview_flutter的文档自己编写

import 'dart:io';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

main() {
  runApp(WebViewApp());
}

class WebViewApp extends StatefulWidget {
  const WebViewApp({Key? key}) : super(key: key);

  @override
  _WebViewAppState createState() => _WebViewAppState();
}

class _WebViewAppState extends State<WebViewApp> {
  @override
  void initState() {
    super.initState();
    if (Platform.isAndroid) {
      WebView.platform = SurfaceAndroidWebView();
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: WebView(
        initialUrl: "https://www.baidu.com/",
        javascriptMode: JavascriptMode.unrestricted,
        onPageStarted: (String url) {
          print("onPageStarted $url");
        },
        onPageFinished: (String url) {
          print("onPageFinished $url");
        },
        onWebResourceError: (error) {
          print("${error.description}");
        },
      ),
    );
  }
}

现在,就可以运行app测试了~

最后是乞讨环节

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值