优雅解决webview_flutter不支持安卓选择图片视频文件问题

news/2025/1/23 4:03:22/

这个问题,网上一搜索,就是要去修改别人写好的插件。 搞Flutter开发,尽量不要去修改别人的插件 ,特别是像 webview_flutter 这种比较大的官方插件。 相信我,你拿捏不了它。 

主要问题就是: webview_flutter 在安卓上加载H5,如果需要上传图片、视频、文件,就点击没反应。 

解决办法 : 

不要去修改 webview_flutter_android 插件,这非常得不优雅。

直接在Flutter端,我们的代码层解决就好了。 看我代码,

第一步,先判断是安卓端,才解决这个问题, 先找到 AndroidWebViewController

if (Platform.isAndroid) {final myAndroidController = _controller.platform as AndroidWebViewController;myAndroidController.setOnShowFileSelector(_androidFilePicker);}

*这里的  _controller , 就是 WebViewController。 

 第二步, 实现 _androidFilePicker 方法: 

Future<List<String>> _androidFilePicker(FileSelectorParams params) async {FilePickerResult? result = await FilePicker.platform.pickFiles();if (result != null) {String filePath = result.files.single.path!;String fileName = result.files.single.name;// Convert the file to base64List<int> fileBytes = await File(filePath).readAsBytes();//convert filepath into urifinal filePath1 = (await _getCacheDirectory()).uri.resolve(fileName);final file = await File.fromUri(filePath1).create(recursive: true);//convert file in bytesawait file.writeAsBytes(fileBytes, flush: true);return [file.uri.toString()];}return [];}Future<Directory> _getCacheDirectory() async {// Use path_provider to get the temporary directory (cache directory)return await getTemporaryDirectory();}

这样就可以解决了。 是不是非常得优雅, 

当然了,  这里使用了 FilePicker ,你也可替换成你想用的,比如 ImagePicker, 或者别的;

你也可以判断一下 FileSelectorParams ,根据不同类型,来选用不同的 图片、视频、文件选择器。 

搞Flutter,我个人非常不喜欢去修改插件,一个是麻烦,二是插件如果有更新,还要去注意自己改的东西有没有受影响,非常麻烦。 


http://www.ppmy.cn/news/1565383.html

相关文章

Golang Gin系列-5:数据模型和数据库

在这篇Gin教程的博客中&#xff0c;我们将探索如何将模型和数据库与Gin框架无缝集成&#xff0c;使你能够构建健壮且可扩展的web应用程序。通过利用流行的库并遵循最佳实践&#xff0c;你将学习如何定义模型、建立数据库连接、执行CRUD操作以及确保基于gin的项目中的数据完整性…

前端【7】javascript-dom操作

目录 DOM 加载与脚本执行的时序问题 1. 将 <script> 标签放到 HTML 末尾 2.使用 defer 属性 3. 使用 window.onload 一、获取元素 1、getElementById 2、getElementsByClassName 3、getElementsByTagName 4、querySelector和querySelectorALL 5、对象的属性关…

AI绘画入门:探索数字艺术新世界(1/10)

引言&#xff1a;AI 绘画的兴起与现状 在科技飞速发展的当下&#xff0c;AI 绘画如同一场艺术领域的风暴&#xff0c;正以惊人的速度席卷而来&#xff0c;彻底改变着我们对艺术创作的认知。近年来&#xff0c;AI 绘画相关的话题屡屡登上热搜&#xff0c;从社交媒体上各种 AI 生…

vulnhub靶场【jangow】靶机,考察反弹shell的流量及端口的选择

前言 靶机&#xff1a;jangow&#xff0c;IP地址为192.168.10.9 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.2 都采用虚拟机&#xff0c;网卡为桥接模式 该靶机目前只剩下一个了&#xff0c;之前记得是有两台构成系列的。 文章中涉及的靶机&#xff0c;来源于vul…

HTML 文本格式化详解

在网页开发中&#xff0c;文本内容的呈现方式直接影响用户的阅读体验。HTML 提供了多种文本格式化元素&#xff0c;可以帮助我们更好地控制文本的显示效果。本文将详细介绍 HTML 中的文本格式化元素及其使用方法&#xff0c;帮助你轻松实现网页文本的美化。 什么是 HTML 文本格…

【Linux】网络层

目录 IP协议 协议头格式 网段划分 2中网段划分的方式 为什么要进行网段划分 特殊的IP地址 IP地址的数量限制 私有IP地址和公有IP地址 路由 IP协议 在通信时&#xff0c;主机B要把数据要给主机C&#xff0c;一定要经过一条路径选择&#xff0c;为什么经过路由器G后&…

Pandas 数据分析(二)【股票数据】

股票数据分析 写在前面题目背景021 加载股票数据到CSV文件022 查看基本信息和数据统计023 更改索引列为普通数据列024 给数据添加月份和年份025 计算每年的平均收盘价026 找到收盘价最低的数据行027 筛选出部分数据列028 设置日期列为索引列029 删除不需要的数据列030 对数据列…

Docker【实用教程】2025最新版

官网 https://www.docker.com/ windows 下载安装 Docker 桌面版 打开官网 https://www.docker.com/&#xff0c;下载对应的桌面端 下载后双击打开&#xff0c;按默认配置安装即可。 linux 下载安装 Docker curl -fsSL https://get.docker.com -o get-docker.shsh get-docker.sh…