第二百九十一回
文章目录
- 1. 概念介绍
- 2. 方法与细节
- 2.1 实现方法
- 2.2 具体细节
- 3. 示例代码
- 4. 内容总结
我们在上一章回中介绍了"如何混合选择图片和视频文件"相关的内容,本章回中将介绍如何混合选择多个图片和视频文件.闲话休提,让我们一起Talk Flutter吧。
1. 概念介绍
我们在上一章回中介绍了混合选择图片和视频文件,不过选择文件时不论是图片还是视频,只能选择一个文件,这个显然无法满足项目需求。本章回中将介绍如何混合选择
多个图片和视频文件,也就是说不限定图片或者视频文件的数量。
2. 方法与细节
包中提供了pickMultipleMedia()方法来混合选择图片或者视频文件,它和我们在上一章回中介绍的pickMedia()方法的使用方法类似,我们在接下来的小节中将
介绍具体的实现方法和相关细节。
2.1 实现方法
下面是混合选择多个图片或者视频文件的实现方法,不过该方法中不包含导入包相关的操作,因为我们在前面章回中已经导入了image_picker包。
- 创建文件选择器对象,也就是包中提供的ImagePicker类的实例;
- 使用文件选择器的pickMultipleMedia()方法获取图片或者视频文件;
- 上一步中的方法将返回图片或者视频文件在本地存储中的相对路径;
- 判断文件类型,并且依据文件类型来显示图片文件或者播放视频文件;
注意:不论是图片文件还是视频文件,获取到文件路径后都要介绍文件路径的可靠性,否则会引起程序异常。
2.2 具体细节
上面的步骤中使用了ImagePicker的pickMultipleMedia()方法,该方法返回的是Future<List<XFile>>
类型的对象,因此我们需要通过Future的then方法
来获取图片或者视频文件的路径。此外,该方法需要异步运行,因为获取图片或者视频文件路径是比较耗时的操作,而且它会获取多个图片或者视频文件的路径。
3. 示例代码
List<XFile>? _multiMediaFileList;ImagePicker imagePicker = ImagePicker();double imgWidth = 200;
double imgHeight = 400;Future<List<XFile>> getMultiMedia() async {var list = await imagePicker.pickMultipleMedia(maxHeight: imgHeight, maxWidth: imgWidth, imageQuality: 100);return list;
}ElevatedButton(onPressed: () {getMultiMedia().then((value) {setState(() {_multiMediaFileList = value;});});},child: const Text("load multiMedia"),
),
上面的示例代码中演示了如何混合获取多个图片和视频文件,我们在代码中把pickMultipleMedia()方法封装成了异步方法,并且将它绑定到按钮上,这样就可以在点
击按钮时发出获取图片或者视频文件的指令,此时会打开一个文件选择器的窗口,我们可以在该窗口中以可视化操作的方式选择图片或者视频文件。图片或者视频文件上会
显示小圆圈,主要用来提示用户哪些图片被选择。 代码中没有演示显示图片和播放视频文 件的方法,详细内容可以参考前面章回中的内容,因为我们刚刚介绍完,所以就
不再详细演示了。不过有些细节我们还需要说明:代码中显示图片或者播放视频文件前需要 检查文件路径,文件路径在程序最开始运 行时为null,在程序运行后,但是没
有选择任何图片或者视频文件时文件路径不为空,而是为empty,这点需要特别注意。此外,因为是混合选择图片或者视频文件,所以我们需要判断文件的类型,此时使用
前面章回介绍过的mime包就可以。获取到文件类型后可以使用Image组件来显示图片文件或者使用VideoPlayer组件来播放视频文件,示例代码中没有这部分代码,大
家参考前面章回中的示例代码就可以。此外,我们建议在Image组件或者VieoPlayer组件外层嵌套了一个ListView,这样可以滚动显示多张图片或者视频,示例代码中
没有列出来,大家可以参考前面章回中显示多个图片的示例代码。
4. 内容总结
最后,我们对本章回的内容做一个全面的总结:
- Flutter官方提供了image_picker包,该包以可视化操作的方式获取图片或者视频文件路径;
- 使用包中的pickMultipleMedio()方法可以获取到当前手机文件系统中多个图片文件或者视频文件的相对路径;
- 显示图片或者播放视频文件前需要判断文件类型,通过mime包可以获取到文件的类型;
- 显示图片或者播放视频文件前需要检查文件路径的可靠性,不然可能无法显示图片或者无法播放视频;
- 显示图片或者播放视频文件时建议通过列表来实现,这样可以滑动显示多个图片或者视频文件;
看官们,与"如何混合选择多个图片和视频文件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!
相关文章:
第二百九十一回
文章目录 1. 概念介绍2. 方法与细节2.1 实现方法2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何混合选择图片和视频文件"相关的内容,本章回中将介绍如何混合选择多个图片和视频文件.闲话休提,让我们一起Talk Flutter吧。 1…...

简化java代码:mapstruct + 策略模式
目录 目的 准备 注意 相同类型-属性名不同 实体类 映射 使用 验证-查看实现类 测试 不同类型(策略模式) 实体类 映射 工具类 使用:对象拷贝 验证-查看实现类 测试 使用:集合拷贝 测试 策略模式说明 准备-依赖 目的 简化 BeanUtils.…...

【Java】SpringMVC路径写法
1、多级路径 ✅类路径和方法路径都可以写成多级 ✅其中,类路径写在方法路径前面 ✅与Servlet不同,SpringMVC中写不写“/”都可以 RequestMapping("/hello/t1") RestController public class HelloSpring {RequestMapping( value "world…...

数据结构之生成树及最小生成树
数据结构之生成树及最小生成树 1、生成树概念2、最小生成树 数据结构是程序设计的重要基础,它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发,分析和研究计算机加工的数据的特性,以便为应用所…...

【java面试】常见问题(超详细)
目录 一、java常见问题JDK和JRE的区别是什么?Java中的String类是可变的还是不可变的?Java中的equals方法和hashCode方法有什么关系?Java中什么是重载【Overloading】?什么是覆盖【Overriding】?它们有什么区别…...

Labview for循环精讲
本文详细介绍Labview中For循环的使用方法,从所有细节让你透彻的看明白For循环是如何使用的,如果有帮助的话记得点赞加关注~ 1. For循环结构 从最简单的地方讲起,一个常用的for循环结构是由for循环结构框图、循环次数、循环计数(i)三部分组成…...

【STM32】STM32学习笔记-W25Q64简介(37)
00. 目录 文章目录 00. 目录01. SPI简介02. W25Q64简介03. 硬件电路04. W25Q64框图05. Flash操作注意事项06. 预留07. 附录 01. SPI简介 在大容量产品和互联型产品上,SPI接口可以配置为支持SPI协议或者支持I 2 S音频协议。SPI接口默认工作在SPI方式,可以…...
clickhouse数据库 使用http 方式交付查询sql
今天使用clickhouse 的HTTP 方式进行查询语句 clickhouse 服务 搭建在192.168.0.111 上面 那么我们如何快速的去查询呢 如下 我们可以使用curl 功能 或者直接在浏览器上输入对应的查询命令 如下: http://192.168.0.111:8123/userdefault&password123456&…...

深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本
序列模型(Sequence Model) 基于文本内容及其前后信息进行预测 基于目标不同时刻状态进行预测 基于数据历史信息进行预测 序列模型:输入或者输出中包含有序列数据的模型 突出数据的前后序列关系 两大特点: 输入(输出)元素之间是具有顺序关系。不同的顺序,得到的结果应…...

案例分享 | 助力数字化转型:嘉为科技项目管理平台上线
嘉为科技项目管理平台(一期)基于易趋(EasyTrack)进行实施,通过近一年的开发及试运行,现已成功交付上线、推广使用,取得了良好的应用效果。 1.关于广州嘉为科技有限公司(以下简称嘉为…...
深入理解 MySQL 中的 HAVING 关键字和聚合函数
深入理解 MySQL 中的 HAVING 关键字和聚合函数 在处理数据库查询时,尤其是涉及到大量数据分析和报表生成的场合,了解如何有效使用 SQL 语句中的 HAVING 关键字和聚合函数变得尤为重要。 什么是 HAVING 关键字? HAVING 关键字在 SQL 语句中…...
GPT4.5人工智能即将来临,ChatGPT的正面影响和负面影响(好处和坏处),利弊分析
ChatGPT来了,对我们影响大不大? 近年来,人工智能技术的飞速进步催生了ChatGPT——一种强大的人工智能语言模型。其杰出的生成能力使其能够与人类进行自然、流畅的交流,从而在教育、医疗和娱乐等多个领域展现出巨大的应用潜力。然…...
条款47:请使用traits classes表现类型信息
1.前言 STL主要由“用以表现容器,迭代器和算法”的template构成,但也覆盖若干工具性templates,其中一个名为advance,用来将某个迭代器移动某个给定距离: tempalte<typename IterT,typename DistT>//将迭代器向…...

蓝桥杯省赛无忧 课件49 DFS-剪枝
01 数字王国之军训排队 02 特殊的三角形 03 特殊的多边形...

Linux中查看端口被哪个进程占用、进程调用的配置文件、目录等
1.查看被占用的端口的进程,netstat/ss -antulp | grep :端口号 2.通过上面的命令就可以列出,这个端口被哪些应用程序所占用,然后找到对应的进程PID https://img-blog.csdnimg.cn/c375eb2bed754426b373907acaa7346e.png 3.根据PID查询进程。…...
大模型面试题总结
文章目录 一、大模型(LLMs)基础面二、大模型(LLMs)进阶面三、大模型(LLMs)微调面四、大模型(LLMs)langchain面1. 基于LLM+向量库的文档对话 基础面2. 基于LLM+向量库的文档对话 优化面3. LangChain的概念面试问题4.LangChain的一些模块提问5.LangChain的业务提问6.Lang…...

Authorization Failed You can close this page and return to the IDE
一.问题描述 注册JetBrains成功,并且通过了学生认证,但在activate pycharm时,却显示Authorization Failed You can close this page and return to the IDE如上图 二.原因: 可能是因为之前使用了破解版pycharm 三.解决方法&am…...

【时间序列篇】基于LSTM的序列分类-Pytorch实现 part2 自有数据集构建
系列文章目录 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part1 案例复现 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part2 自有数据集构建 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part3 化为己用 在一个人体姿态估计的任务中,需要用深度学习模型…...
《设计模式的艺术》笔记 - 策略模式
介绍 策略模式定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式。策略模式是一种对象行为模式。 实现 myclass.h // // Created by yuwp on 2024/1/12. //#ifndef DES…...

【Elasticsearch篇】详解使用RestClient操作索引库的相关操作
文章目录 🍔什么是Elasticsearch🌺什么是RestClient🎆代码操作⭐初始化RestClient⭐使用RestClient操作索引库⭐使用RestClient删除索引库⭐使用RestClient判断索引库是否存在 🍔什么是Elasticsearch Elasticsearch是一个开源的分…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...