当前位置: 首页 > news >正文

flutter:webview_flutter的简单使用

前言

最近在研究如何在应用程序中嵌入Web视图,发现有两个库不错。
在这里插入图片描述
一个是官方维护、一个是第三方维护。因为没说特别的需求,就使用了官方库,实现一些简单功能是完全ok的

基本使用

官方文档

https://pub-web.flutter-io.cn/packages/webview_flutter

安装

flutter pub add webview_flutter

加载并显示web
可以加载html字符串,也可以直接加载url链接。官方都提供了对应的方法,这里演示加载url

  • 初始化
 late WebViewController webViewController;//初始化void initState() {super.initState();webViewController = WebViewController()..setJavaScriptMode(JavaScriptMode.unrestricted);}
  • 显示
    显示的时候一般需要结合FutureBuilder,比较这是一个异步的过程
FutureBuilder(// 异步方法future: searchNovelFromWeb(),builder: (context, snapshot) {// 等待状态显示的widgetif (snapshot.connectionState == ConnectionState.waiting) {return const Center(child: CircularProgressIndicator(),);//  错误时显示的widget} else if (snapshot.hasError) {return const Text('Error');} else {return snapshot.data ?? const Text('No data');}}))Future<Widget> searchNovelFromWeb() async {Widget res;try {await webViewController.loadRequest(Uri.parse('https://m.bbxxxxxx.com/s?q=凡人修仙'));res = WebViewWidget(controller: webViewController);} catch (error) {res = Text("加载失败:${error.toString()}");print("加载失败:${error.toString()}");}return res;}

在这里插入图片描述
在这里插入图片描述

flutter与web之间的交互

flutter通知web,让web执行某些操作

官方提供了两个方法:runJavaScriptrunJavaScriptReturningResult。后者可以向flutter返回执行结果
比如在网页加载完成后获取到网页源代码

webViewController.setNavigationDelegate(NavigationDelegate(onPageFinished: (url) async {print("页面加载完成:$url");var html = await webViewController.runJavaScriptReturningResult("document.documentElement.innerText;");debugPrint("结果是11:$html", wrapWidth: 1024);}));

在这里插入图片描述

web发生变化后,通知flutter
这块也实现了,但是不太稳定,有时候不能够正常运行

 await webViewController.loadRequest(Uri.parse('https://m.bbxxxxxxxt.com/s?q=凡人修仙'));webViewController.setNavigationDelegate(NavigationDelegate(onPageFinished: (url) async {print("页面加载完成:$url");// 添加监听await webViewController.addJavaScriptChannel('Report',onMessageReceived: (JavaScriptMessage message) {print("收到了消息,是:${message.message}");});// 注入脚本await  webViewController.runJavaScript('''setInterval(() => {let time = new Date().toLocaleTimeString();Report.postMessage(time);},1000)''');}));

在这里插入图片描述

相关文章:

flutter:webview_flutter的简单使用

前言 最近在研究如何在应用程序中嵌入Web视图&#xff0c;发现有两个库不错。 一个是官方维护、一个是第三方维护。因为没说特别的需求&#xff0c;就使用了官方库&#xff0c;实现一些简单功能是完全ok的 基本使用 官方文档 https://pub-web.flutter-io.cn/packages/webv…...

Ansys Zemax | 手机镜头设计 - 第 1 部分:光学设计

本文是 3 篇系列文章的一部分&#xff0c;该系列文章将讨论智能手机镜头模组设计的挑战&#xff0c;从概念、设计到制造和结构变形的分析。本文是三部分系列的第一部分&#xff0c;将专注于OpticStudio中镜头模组的设计、分析和可制造性评估。&#xff08;联系我们获取文章附件…...

jvm从入门到精通

jvm 1.jvm与java体系结构​​​​​​​...

[NLP]LLM 训练时GPU显存耗用量估计

以LLM中最常见的Adam fp16混合精度训练为例&#xff0c;分析其显存占用有以下四个部分&#xff1a; GPT-2含有1.5B个参数&#xff0c;如果用fp16格式&#xff0c;只需要1.5G*2Byte3GB显存, 但是模型状态实际上需要耗费1.5B*1624GB. 比如说有一个模型参数量是1M&#xff0c;在…...

Unity引擎使用InteriorCubeMap采样制作假室内效果

Unity引擎制作假室内效果 大家好&#xff0c;我是阿赵。   这次来介绍一种使用CubeMap做假室内效果的方式。这种技术名叫InteriorCubeMap&#xff0c;是UE引擎自带的节点效果。我这里是在Unity引擎里面的实现。 一、效果展示 这个假室内效果&#xff0c;要动态看才能看出效…...

Gin安装解决国内go 与 热加载

get 方式安装超时问题&#xff0c;国内直接用官网推荐的下面这个命令大概率是安装不成功的 go get -u github.com/gin-gonic/gin 可以在你的项目目录下执行下面几个命令&#xff1a; 比如我的项目在E:\Oproject\zl cmd E:\Oproject\zl>就在目录下执行 go env -w GO111…...

安防监控视频云存储平台EasyCVRH.265转码功能更新:新增分辨率配置

安防视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求&#xff0c;让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上&#xff0c;视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频云存储、视频存储…...

Linux 创建用户赋予root权限,并限定登录ip

1.创建jms用户 创建组 groupadd jms创建用户 -g 指定分组 useradd -m -d /home/jms jms -g jms -s /bin/bash设置用户密码 passwd jms2.赋予root权限 编辑文件 vim /etc/sudoers添加如下内容 jms ALL(ALL:ALL) NOPASSWD: ALL3.限定登录ip 编辑文件&#xff0c;在末尾添…...

基于令牌级 BERT 嵌入的趋势生成句子级嵌入

一、说明 句子&#xff08;短语或段落&#xff09;级别嵌入通常用作许多 NLP 分类问题的输入&#xff0c;例如&#xff0c;在垃圾邮件检测和问答 &#xff08;QA&#xff09; 系统中。在我上一篇文章发现不同级别的BERT嵌入的趋势中&#xff0c;我讨论了如何生成一个向量表示&a…...

计算机视觉目标检测性能指标

目录 精确率&#xff08;Precision&#xff09;和召回率&#xff08;Recall&#xff09; F1分数&#xff08;F1 Score&#xff09; IoU&#xff08;Intersection over Union&#xff09; P-R曲线&#xff08;Precision-Recall Curve&#xff09;和 AP mAP&#xff08;mean…...

什么是webpack?如何在项目中安装配置webpack?

webpack 是前端项目工程化的具体解决方案。 它提供了友好的前端模块化开发支持&#xff0c;以及代码压缩混淆、处理浏览器端 JavaScript 的兼容性、性能优化等强大的功能。 让程序员把工作的重心放到具体功能的实现上&#xff0c;提高了前端开发效率和项目的可维护性。目前企业…...

linux两台服务器互相备份文件(sshpass + crontab)

crontab crontab是linux系统自带的定时调度软件&#xff0c;可用于设置周期性被执行的指令&#xff0c;一般用在每天的非高峰负荷时间段运行作业&#xff0c;可在无需人工干预的情况下运行作业。支持在一周或一月中的不同时段运行。 crontab命令允许用户提交、编辑或删除相应的…...

Flask框架-配置日志(1):flask使用日志

一、项目结构 study_flask --| apps/ --| __init__.py --| base/ --| logger.py --| __init__.py --| app.py 二、配置日志功能 1、base/logger.py import os import logging from datetime import datetime,date,timedelta from logging.handlers import RotatingFileHandl…...

每天一道leetcode:1192. 查找集群内的关键连接(图论困难tarjan算法)

今日份题目&#xff1a; 力扣数据中心有 n 台服务器&#xff0c;分别按从 0 到 n-1 的方式进行了编号。它们之间以 服务器到服务器 的形式相互连接组成了一个内部集群&#xff0c;连接是无向的。用 connections 表示集群网络&#xff0c;connections[i] [a, b] 表示服务器 a …...

解决Windows系统远程登陆后vscdoe无法输入字符,键盘没有反应,鼠标可以点击,没有反应

文章目录 前言操作过程 前言 使用vscode编译器时&#xff0c;通过远程登录或者屏幕锁屏解锁后&#xff0c;vscode出现无法输入字符内容&#xff0c;但vscode没有死机&#xff0c;切换到其他软件的窗口再切换回来后&#xff0c;可以使用鼠标点击&#xff0c;但是只要使用键盘输…...

axios同一个接口,同时接收 文件 或者 数据

1、前端代码 const service axios.create({baseURL: "http://192.168.2.200:8080/api",timeout: 180000 })// 响应拦截 service.interceptors.response.use(async response > {if(response){// 请求时设置返回blob, 但是实际上可能返回的是json的情况if (respon…...

【腾讯云 TDSQL-C Serverless产品体验】抓取processon热门模版的标题生成词云

【腾讯云 TDSQL-C Serverless产品体验】抓取processon热门模版的标题生成词云 serverless服务是腾讯云自研的新一代云原生关系型数据库TDSQ L-C的无服务器架构版&#xff0c;是全Serverless架构的云原生数据库 前言 体验了一下腾讯云刚出的TDSQL-C Serverless&#xff0c;使用…...

算法通关村第九关 | 二叉树查找和搜索树原理

1. 二分查找的扩展问题 1.1山脉数组的巅峰索引 LeetCode852&#xff1a;题目核心意思是在数组中&#xff0c;从0到i是递增的&#xff0c;从i1到数组最后是递减的&#xff0c;让你找到这个最高点。 三种情况&#xff1a; mid在上升阶段的时候&#xff0c;满足arr[mid] > a…...

jenkins gitlab 安装

目录 一 准备安装环境 二 安装gitlab软件 三 配置gitlab 四 重新加载配置启动gitlab 五 修改密码 五 创建用户组 一 准备安装环境 sudo yum update sudo yum install -y curl policycoreutils-python openssh-server安装 Postfix 邮件服务器&#xff0c;以便 Git…...

Vue2(组件开发)

目录 前言一&#xff0c;组件的使用二&#xff0c;插槽slot三&#xff0c;refs和parent四&#xff0c;父子组件间的通信4.1&#xff0c;父传子 &#xff1a;父传子的时候&#xff0c;通过属性传递4.2&#xff0c;父组件监听自定义事件 五&#xff0c;非父子组件的通信六&#x…...

MC/DC覆盖率:从原理到实战,破解100%覆盖率的迷思与挑战

1. 项目概述&#xff1a;当“完美”成为负担在软件测试领域&#xff0c;尤其是对安全关键系统&#xff08;比如航空航天、汽车电子、医疗设备&#xff09;的验证&#xff0c;我们常常听到一个词&#xff1a;100%覆盖率。这听起来像是一个终极目标&#xff0c;一个完美的终点。但…...

百度千帆平台文心4.0 API开通与计费避坑指南:个人开发者如何低成本尝鲜?

百度千帆文心4.0 API低成本接入实战&#xff1a;个人开发者的精打细算指南 当大模型API成为个人开发者的"新基建"&#xff0c;如何用最低成本体验最前沿的ERNIE-Bot-4能力&#xff1f;作为经历过完整踩坑流程的实践者&#xff0c;我将分享从申请到调用的全流程避坑策…...

遥感转码占比3.16%:为什么比测绘、地信少?

年初时我们统计过一个数据&#xff0c;2025年所有转GIS开发的同学中&#xff0c;遥感转码的人数占比约3.16%&#xff0c;远低于地信&#xff08;36.84%&#xff09;和测绘&#xff08;20.52%&#xff09;&#xff0c;甚至不如城乡规划&#xff08;8.95%&#xff09;多。都说3S不…...

OpenCV实战:工业相机Bayer数据高效转换与图像处理全流程

1. 工业相机Bayer格式基础解析 第一次接触工业相机输出的Bayer格式数据时&#xff0c;我盯着那些看起来像黑白噪点的图像完全摸不着头脑。后来才发现&#xff0c;这其实是工业视觉领域最常见的原始数据格式之一。Bayer格式的本质是单通道马赛克阵列&#xff0c;每个像素点只记录…...

Android MediaCodec解码实战:从H.264文件到ImageView,同步与异步模式代码对比与避坑指南

Android MediaCodec解码实战&#xff1a;同步与异步模式深度解析与性能优化 在移动端视频处理领域&#xff0c;Android MediaCodec作为系统级硬件加速接口&#xff0c;一直是开发者实现高效视频解码的首选方案。但面对同步与异步两种工作模式的选择&#xff0c;许多中高级开发者…...

PHP Font Lib 与其他字体库对比:为什么它是 PHP 开发者的首选

PHP Font Lib 与其他字体库对比&#xff1a;为什么它是 PHP 开发者的首选 【免费下载链接】php-font-lib A library to read, parse, export and make subsets of different types of font files. 项目地址: https://gitcode.com/gh_mirrors/ph/php-font-lib 在PHP开发领…...

避坑指南:用3dMax一键房屋插件时,为什么你的窗洞总创建失败?

3dMax一键房屋插件窗洞创建失败的深度排查手册 引言 在建筑可视化与室内设计领域&#xff0c;3dMax的一键房屋插件确实为设计师节省了大量重复劳动时间。然而&#xff0c;许多中级用户在尝试创建窗洞时&#xff0c;常常遭遇各种意料之外的失败——从简单的按钮灰色不可点击&…...

STM32F103驱动ST7567 LCD屏:手把手教你移植U8g2库(SPI接口,附完整工程)

STM32F103驱动ST7567 LCD屏&#xff1a;从零开始移植U8g2库实战指南 当你第一次拿到一块ST7567驱动的LCD屏时&#xff0c;可能会被各种引脚定义和初始化代码搞得晕头转向。本文将带你从硬件连接到软件移植&#xff0c;一步步完成U8g2库在STM32F103上的适配过程。不同于简单的代…...

C#从零开始学习笔记---第七天

不是同样的时间&#xff0c;不是同样的笔记&#xff0c;但是同样的作者。新的一天&#xff0c;欢迎收看我的学习笔记吼吼~我们昨天最后留了两道题&#xff0c;不知道大家做的怎么样&#xff0c;我现在来公布一下答案&#xff0c;但因为1000个人心里有1000个哈姆雷特&#xff0c…...

告别PCL!用Qt+QGLWidget手把手教你打造自己的3D点云查看器(附完整源码)

轻量级3D点云可视化&#xff1a;基于Qt与OpenGL的高效实现方案 在工业测量、自动驾驶和三维重建等领域&#xff0c;点云数据的可视化一直是开发者面临的挑战。传统方案如PCL虽然功能强大&#xff0c;但其庞大的体积和复杂的依赖链往往让项目变得臃肿。本文将展示如何利用Qt的QG…...