我的编程空间,编程开发者的网络收藏夹
学习永远不晚

正确在Flutter中添加webview实现详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

正确在Flutter中添加webview实现详解

前言

为什么要在flutter中引入webview?这不是废话么,当然是为了加载一个网页,这不是移动端最基本的需求么,哈哈!说的真不错,接下来我要是告诉你我的用法,你可能要大吃一惊。我的用处很简单,那就是在webview中再加载一个flutter编译成web的项目。有没有吓到你。别怕,我这么做的原因很简单,就是为了热更新。可能在flutter中实现热更新的方法有很多,但我敢说我这么做就是最好的热更新方式。当我内容发生变更是时候,我不需要继续去审核,只需要在服务器中,更新内容,我的热更新就实现了!是不是听着很动心,那就赶紧学起来吧。

安装

在Flutter应用开发中,由于官方并没有提供类似Webview的网页加载组件,所以如果项目中涉及网页加载就需要使用第三方插件库。网上第三方插件库很多,我不推荐,自行百度搜索比较,用法基本雷同,webview_flutter是Flutter官方开发和维护的网页加载插件库。所以今天我讲讲它的使用方法

  • 在pubspec.yaml文件中添加依赖脚本(并运行隐式flutter pub get)
dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2
  webview_flutter: ^3.0.4
  • 使用
import 'package:flutter/material.dart';
import 'dart:io';
import 'package:webview_flutter/webview_flutter.dart';
class WebviewApp extends StatefulWidget {
  const WebviewApp({Key? key}) : super(key: key);
  @override
  State<WebviewApp> createState() => _WebviewAppState();
}
class _WebviewAppState extends State<WebviewApp> {
  @override
  void initState() {
    super.initState();
    if (Platform.isAndroid) WebView.platform = AndroidWebView();
  }
  @override
  Widget build(BuildContext context) {
    return const WebView(
      initialUrl: 'https://www.baidu.com',
      javascriptMode: JavascriptMode.unrestricted,
    );
  }
}

好了,这样我们就成功引入了webview,并在webview中加载了百度首页。你高兴的去运行项目,结果却傻眼了,终端一片红,好了,我来说说爆红的解决方案。

运行项目遇到的问题

One or more plugins require a higher Android SDK version.

  • 解决方案:找到 项目根目录\android\app\build.gradle,修改如下配置:
android {
  compileSdkVersion 32
}

Error: uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library

  • 解决方案:找到 项目根目录\android\app\build.gradle,修改如下配置:
defaultConfig {
    applicationId "com.example.flutter_jsbridge_js"
    minSdkVersion 20
    targetSdkVersion 30
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}

net:ERR_CLEARTEXT_NOT_PERMITTED

这时候运行项目已经已经不会报错了,但是webview却显示一串神奇代码:

net:ERR_CLEARTEXT_NOT_PERMITTED,这是因为从 Android 9(API 级别 28)开始,明文支持默认处于禁用状态。

  • 解决方案:

创建文件:/xml/network_security_config.xml

目录路径:“项目根目录/android/app/main/res”

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">api.example.com(to be adjusted)</domain>
    </domain-config>
</network-security-config>
  • 对AndroidManifest.xml文件做修改:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config"
        ...>
        ...
    </application>
</manifest>

这时候再去运行项目,就可以正常运行了,画面显示正常,如果你还需要遇到其他问题,可以留言一起解决。

以上就是正确在Flutter中添加webview实现详解的详细内容,更多关于Flutter添加webview的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

正确在Flutter中添加webview实现详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

正确在Flutter中添加webview实现详解

这篇文章主要为大家介绍了正确在Flutter中添加webview实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-08

详解如何在Java中实现懒加载

懒加载是一种常见的优化技术,它可以延迟对象的创建或初始化,直到对象第一次被使用时才进行。在本文中,我们将介绍如何使用 Java 中的 Supplier 接口和双重检查锁定模式来实现懒加载,并保证只初始化一次,希望对大家有所帮助
2023-03-19

Flutter在项目中使用动画不使用包实现详解

这篇文章主要为大家介绍了Flutter在项目中使用动画不使用包实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-21

autojs长宽不定的图片在正方形图片居中实现详解

这篇文章主要为大家介绍了autojs长宽不定的图片在正方形图片居中实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-01-31

出现 login.error.passwordAuthenticationIsProhibited 访问公网IP地址需要在实例安全组白名单中添加 Workbench的服务器白名单 解决方法

目录 1. 问题所示 2. 原理分析 3. 解决方法 4. 其他(零作用) 1. 问题所示 通过xshell远程服务器的时候,一直没反应 再次通过阿里云服务器的终端进行登录,提示如下: 登录主机xxx失败原因:log
出现 login.error.passwordAuthenticationIsProhibited 访问公网IP地址需要在实例安全组白名单中添加 Workbench的服务器白名单 解决方法
2023-12-22

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录