如何正确的在Flutter中添加webview

news2025/2/26 6:35:38

前言

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

安装

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

1.在pubspec.yaml文件中添加依赖脚本(并运行隐式flutter pub get)

dependencies:flutter:sdk: fluttercupertino_icons: ^1.0.2webview_flutter: ^3.0.4 

2.使用

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);@overrideState<WebviewApp> createState() => _WebviewAppState();
}

class _WebviewAppState extends State<WebviewApp> {@overridevoid initState() {super.initState();if (Platform.isAndroid) WebView.platform = AndroidWebView();}@overrideWidget 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 20targetSdkVersion 30versionCode flutterVersionCode.toInteger()versionName flutterVersionName
} 

net:ERR_CLEARTEXT_NOT_PERMITTED

这时候运行项目已经已经不会报错了,但是webview却显示一串神奇代码:net:ERR_CLEARTEXT_NOT_PERMITTED,这是因为从 Android 9(API 级别 28)开始,明文支持默认处于禁用状态。

  • 解决方案:

1.创建文件:/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> 

2.对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> 

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

最后

为大家准备了一个前端资料包。包含54本,2.57G的前端相关电子书,《前端面试宝典(附答案和解析)》,难点、重点知识视频教程(全套)。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【音视频处理】码率、帧率越高越清晰?分辨率、像素、dpi之间是什么关系?码率的真实作用,I帧、B帧、P帧是什么

大家好&#xff0c;欢迎来到停止重构的频道。本期我们介绍一下视频的一些基础概念&#xff0c;如帧率、码率、分辨率、像素、dpi、视频帧、I帧、P帧、gop等。会解释多少码率是清晰的&#xff0c;是否帧率越高越流畅等问题。这些概念是比较杂乱的&#xff0c;我们按这样的顺序介…

Seata源码学习(四)-数据源代理

Seata源码分析-数据源代理 上节课我们分析了整体的Seata-AT模式的2PC执行流程&#xff0c;那么这节课我们要分析的就是在AT模式中的关键点&#xff0c;数据源代理 AT模式的核心点&#xff1a; 获取全局锁、开启全局事务解析SQL并写入undolog 那么上节课其实我们已经把第一步…

【目标检测】K-means和K-means++计算anchors结果比较(附完整代码,全网最详细的手把手教程)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 一、介绍 YOLO系列目标检测算法中基于anchor的模型还是比较多的,例如YOLOv3、YOLOv4、YOLOv5等,我们可以随机初始化a…

简约精美电商小程序【源码好优多】

简介 一款开源的电商系统&#xff0c;包含微信小程序和H5端&#xff0c;为大中小企业提供移动电子商务优秀的解决方案。 后台采用Thinkphp5.1框架开发&#xff0c;执行效率、扩展性、稳定性值得信赖。并且Jshop小程序商城上手难度低&#xff0c;可大量节省定制化开发周期。 功…

设计模式(适配器模式)

设计模式&#xff08;适配器模式&#xff09; 第二章 设计模式之适配器模式&#xff08;Adapter&#xff09; 一、Adapter模式介绍 适配器模式位于实际情况和需求之间&#xff0c;填补两者之间的差距。 二、示例程序1&#xff08;使用继承的适配器&#xff09; 1.示例程序示…

操作系统(五):编译过程,静态链接,目标文件,动态链接

文章目录一、程序的编译过程二、静态链接三、目标文件四、动态链接一、程序的编译过程 在linux上编译一个c文件hello.c的命令为: g -o hello hello.c 整个过程大致要经过一下四步: 预处理 &#xff1a; 处理以#开头的预处理命令编译 &#xff1a; 翻译成汇编文件汇编 &…

HTTPS基础原理和配置-3

书接上文&#xff1a;HTTPS 基础原理和配置 - 2&#xff0c;接下来介绍&#xff1a; 配置 NGINX后端 HTTPS检查配置配置 HSTSOCSP Stapling 重要部分来了。如何使用这些选项并配置NGINX? 一、NGINX 的 HTTPS 配置 这里有一些基本的原语&#xff08;或叫做指令&#xff09;…

GEE学习笔记八十八:在自己的APP中使用绘制矢量(上)

在GEE中尤其是自己的APP中调用绘制的矢量图形方法之前没有合适的方法&#xff0c;但是现在可以通过ui.Map.DrawingTools(...)以及ui.Map.GeometryLayer(...)结合来做。具体的API如下图&#xff1a; 在这一篇中我先通过一个简单的例子来展示一下使用这些API后可以实现什么效果&a…

C#底层库--日期扩展类(上周、本周、明年、前年等)

系列文章 C#底层库–记录日志帮助类 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–数据库访问帮助类&#xff08;MySQL版&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/126886379 …

axios中的GET POST PUT PATCH,发送请求时params和data的区别

axios 中 get/post请求方式 1. 前言 最近突然发现post请求可以使用params方式传值&#xff0c;然后想总结一下其中的用法。 2.1 分类 经过查阅资料&#xff0c;get请求是可以通过body传输数据的&#xff0c;但是许多工具类并不支持此功能。 在postman中&#xff0c;选择get请…

以before为例 完成一个aop代理强化方法案例

观看本文 首先 您需要做好Spring aop的准备工作 具体可以参考我的文章 java Spring aop入门准备工作 首先 我们创建一个包 我这里叫 Aop 然后在Aop包下创建一个类 叫 User 参考代码如下 package Aop;public class User {public void add(){System.out.println("add....…

android kotlin 协程(三) 理解挂起,恢复以及job

android kotlin 协程(三) 理解挂起,恢复以及job 前言: 通过上两篇的基础入门,相信大家对协程api已经有了一个基本的影响,本篇开始尝试理解挂起于恢复. 本篇不涉及源码, 通过很多应用案例,来理解挂起于恢复! 协程执行流程理解 还是老套路,先来看原始效果 参考图1 在这里我们知…

电子技术——目录

电子技术——目录 第一章——信号与放大器 第二章——运算放大器 第三章——半导体器件 第四章——二极管 第五章——金属氧化物场效应晶体管 目录&#xff1a; MOS管的物理结构MOS管的CV特性MOS放大器基础MOS管的小信号模型基本MOS放大器配置MOS放大器的DC偏置分立MOS放…

传奇开服方法教程:传奇开服在哪些网站打广告?传奇发布站打广告技巧

传奇开服方法教程&#xff1a;传奇开服在哪些网站打广告&#xff1f;传奇发布站打广告技巧 纯分享经验以及方法&#xff1a;开传奇sf&#xff0c;成本最高的就是广告费用了&#xff0c;为了让服人气更高&#xff0c;主播和发布站相信你们都已经尝试了&#xff0c;上人效果如何你…

全网详解 .npmrc 配置文件:比如.npmrc的优先级、命令行,如何配置.npmrc以及npm常用命令等

文章目录1. 文章引言2. 简述.npmrc3. 配置.npmrc3.1 .npmrc配置文件的优先级3.2 .npmrc设置的命令行3.3 如何设置.npmrc4. 配置发布组件5. npm常用命令6. 重要备注6.1 yarn6.2 scope命名空间6.3 镜像出错1. 文章引言 今天在某低代码平台开发项目时&#xff0c;看到如下编译配置…

Java实现调用ChatGPT的相关接口(附详细思路)

目录1.0.简单版2.0.升级版2-1.call.timeout()怎么传入新的超时值2-2.timeout(10, TimeUnit.SECONDS)两个参数的意思&#xff0c;具体含义3.0.进阶版3-1.java.net.SocketTimeoutException: 超时如何解决4.0.终极版1.0.简单版 以下是一个使用 Java 实际请求 ChatGPT 的简单示例代…

EasyExcel详解-写Excel

一、注解使用注解很简单&#xff0c;只要在对应的实体类上面加上注解即可。ExcelProperty用于匹配excel和实体类的匹配,参数如下&#xff1a;名称默认值描述value空用于匹配excel中的头&#xff0c;必须全匹配,如果有多行头&#xff0c;会匹配最后一行头orderInteger.MAX_VALUE…

硬件系统工程师宝典(6)-----如何减小信号串扰?

各位同学大家好&#xff0c;欢迎继续做客电子工程学习圈&#xff0c;今天我们继续来讲这本书&#xff0c;硬件系统工程师宝典。 上篇我们说到描述信号传输的过程的需要做好阻抗匹配&#xff0c;以减小信号的反射。今天我们来看看传输线之间的噪声干扰&#xff0c;那就是信号的…

rdma rocev2报文格式总结

格式如下&#xff1a; wireshark抓包&#xff0c;soft-roce(基于rocev2实现的)格式如下&#xff1a; 其实这里看着有点奇怪&#xff0c;ICRC是跟在Payload头后面的&#xff0c;不知道为什么抓包看到的却是在BTH头后面的&#xff0c;还有就是看不到FCS?? 其中BTH头的格式有…

极兔一面:Dockerfile如何优化?注意:千万不要只说减少层数

说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;面试题是一个非常、非常高频的交流话题。 最近&#xff0c;有小伙伴面试极兔时&#xff0c;遇到一个面试题&#xff1a; 如果优化 Dockerfile&#xff1f; 小伙伴没有回答好&#xff0c;只是提到了减少镜像层数。…