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

如何选择图片和视频

文章目录

  • 1. 概念介绍
  • 2. 方法与细节
    • 2.1 实现方法
    • 2.2 具体细节
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"如何选择视频文件"相关的内容,本章回中将介绍如何混合选择图片和视频文件.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在前面章回中介绍了选择图片和视频文件相关的内容,不过是图片和视频分开单独选择的,就是说每次选择时只能单独选择图片或者单独选择视频文件,能不能在选择
文件的时候既可以选择图片又可以选择视频呢?可以!我们将在本章回中介绍如何同时选择图片和视频文件。

2. 方法与细节

包中提供了pickMedia()方法来选择图片或者视频文件,我们在接下来的小节中将介绍具体的实现方法和相关细节。

2.1 实现方法

下面是选择图片或者视频文件的实现方法,不过该方法中不包含导入包相关的操作,因为我们在前面章回中已经导入了image_picker包。

  • 创建文件选择器对象,也就是包中提供的ImagePicker类的实例;
  • 使用文件选择器的pickMedia()方法获取图片或者视频文件;
  • 上一步中的方法将返回图片或者视频文件在本地存储中的相对路径;
  • 判断文件类型,并且依据文件类型来显示图片文件或者播放视频文件;
    注意:不论是图片文件还是视频文件,获取到文件路径后都要介绍文件路径的可靠性,否则会引起程序异常。

2.2 具体细节

上面的步骤中使用了ImagePicker的pickMedia()方法,该方法返回的是Future<XFile>类型的对象,因此我们需要通过Future的then方法来获取图片或者视
频文件的路径。此外,该方法需要异步运行,因为获取图片或者视频文件路径是比较耗时的操作。

3. 示例代码

XFile? _mediaFile;ImagePicker imagePicker = ImagePicker();double imgWidth = 200;
double imgHeight = 400;Future<XFile?> getMedia() async {var file = await imagePicker.pickMedia(maxHeight: imgHeight, maxWidth: imgWidth, imageQuality: 100);return file;
}ElevatedButton(onPressed: () {getMedia().then((value) {setState(() {_mediaFile = value;});});},child: const Text("load multiMedia"),
),

上面的示例代码中演示了如何混合获取图片和视频文件,我们在代码中把pickMedia()方法封装成了异步方法,并且将它绑定到按钮上,这样就可以在点击按钮时发出获
取图片或者视频文件的指令,此时会打开一个文件选择器的窗口,我们可以在该窗口中以可视化操作的方式选择图片或者视频文件。代码中没有演示显示图片和播放视频文件的方法,详细内容可以参考前面章回中的内容,因为我们刚刚介绍完,所以就不再详细演示了。不过有些细节我们还需要说明:代码中显示图片或者播放视频文件前需要检查文件路径,文件路径 在程序最开始运 行时为null,在程序运行后,但是没有选择任何图片或者视频文件时文件路径不为空,而是为empty,这点需要特别注意。此外,因为是混合选择图片或者视频文件,所以我们需要判断文件的类型,此时使用前面章回介绍的mime包就可以。获取到文件类型后可以使用Image组件来显示图片文件或者
使用VideoPlayer组件来播放视频文件,示例代码中没有这部分代码,大家参考前面章回中的示例代码就可以。

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • Flutter官方提供了image_picker包,该包以可视化操作的方式获取图片或者视频文件路径;
  • 使用包中的pickMedio()方法可以获取到当前手机文件系统中图片文件或者视频文件的相对路径;
  • 显示图片或者播放视频文件前需要判断文件类型,通过mime包可以获取到文件的类型;
  • 显示图片或者播放视频文件前需要检查文件路径的可靠性,不然可能无法显示图片或者无法播放视频;
    看官们,与"如何混合选择图片和视频文件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

相关文章:

如何选择图片和视频

文章目录 1. 概念介绍2. 方法与细节2.1 实现方法2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何选择视频文件"相关的内容&#xff0c;本章回中将介绍如何混合选择图片和视频文件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我…...

html+css网页制作 电商华为商城首页 ui还原度100%

htmlcss网页制作 电商华为商城首页 ui还原度100% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码…...

EDAS(企业级应用服务)

1 :介绍 1&#xff1a;edas 提供了应用&#xff0c;开发&#xff0c;部署&#xff0c;监控&#xff0c;运维。同时支持 spring cloud, dubbo ,HSF 2:Ali-Tomcat 基于tomcat改造的Servlet容器。支持原有功能&#xff0c;它在启动时会自动加载Pandora&#xff08;潘多拉&#x…...

简单工厂,工厂方法 和 抽象工厂

这三种模式&#xff0c; 都是创建类型的模式&#xff0c; 将对象的创建流程封装起来供客户调用 简单工厂模式 简介: 和策略模式一样&#xff0c;就是针对不通的参数&#xff0c; 返回不通的实例而已 问题: 没有遵循开闭原则&#xff0c; 如果我们想增加一种类&#xff0c; 那…...

python 压力测试脚本

需求&#xff1a; 生成一个12位不重复的随机数将随机数赋值给Json 串中的 orderCode字段将Json用ECB 指定 key为bJXQezYtR4ZSNK4p进行加密并作为值传给{ “data”: “” }设置每秒30个并发持续1分钟调用接口接口输出测试测试报告 代码示例 import json import random import…...

【Linux】多线程7——线程池

1.线程池的概念 1.1.池化技术 池化技术指的是提前准备一些资源&#xff0c;在需要时可以重复使用这些预先准备的资源。 在系统开发过程中&#xff0c;我们经常会用到池化技术。通俗的讲&#xff0c;池化技术就是&#xff1a;把一些资源预先分配好&#xff0c;组织到对象池中…...

Linux Shell实例

1.查空行 答案&#xff1a; awk /^$/{print NR} file1.txt#awk:一个强大的文本分析工具&#xff0c;把文件逐行的读入&#xff0c;以空格为默认分隔符将每行切片&#xff0c;切开的部分再进行分析#处理。 #1&#xff09;基本语法 #awk [选项参数]/pattern1/{action1} /pattern…...

Linux~MySQL数据库具体操作

一、数据库的字符集编码设置 &#xff08;一&#xff09;查看数据库默认的字符集 MariaDB [(none)]> show variables like %character%; ------------------------------------------------------ | Variable_name | Value | ------------…...

Unity WebGL平台Hybrid Generate All报错undefined symbol sendfile

详细报错信息如下&#xff1a; Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js: undefined symbol: sendfile (referenced by top-level compiled C/C code) UnityEditor.BuildPipeline:BuildPlayer (UnityEditor.BuildPlayerOptions) HybridCLR.Editor.Comman…...

Java高级Day28-多线程

83.多线程 什么是线程&#xff1a; 线程右进程创建的&#xff0c;是进程的一个实体 一个进程可以有多个线程 并发&#xff1a;同一个时刻&#xff0c;多个任务交替执行&#xff0c;造成一种貌似同时的错觉 并行&#xff1a;同一个时刻&#xff0c;多个任务同时执行&#x…...

0003 保险的会计要素及其计量属性

与一般行业相同&#xff0c;保险业的会计要素主要包括资产、负债、所有者权益、收入、成本与费用以及利润六个方面。然而&#xff0c;在某些特定的要素上&#xff0c;保险业展示了其独特之处。 资产&#xff1a;由于保险本质上是一种承诺而非实物商品&#xff0c;因此保险业不持…...

Swift版本控制的艺术:掌握代码演化的魔杖

标题&#xff1a;Swift版本控制的艺术&#xff1a;掌握代码演化的魔杖 在Swift开发的世界中&#xff0c;代码的版本管理是一个核心议题。它不仅关系到代码的组织和追踪&#xff0c;更是团队协作和项目持续交付的关键。本文将深入探讨如何在Swift中利用版本管理工具&#xff0c…...

学习实战:生活垃圾自动识别与分类系统的实现

引言 在日常生活中&#xff0c;垃圾分类是保护环境的重要措施之一。然而&#xff0c;手动分类不仅耗时&#xff0c;还容易出错。基于深度学习的垃圾检测与分类系统能够自动识别和分类不同类型的垃圾&#xff0c;从而提高分类效率。 目录 项目概述 项目背景与意义系统功能介绍…...

Swift模块化构建:解锁代码重用的金钥匙

标题&#xff1a;Swift模块化构建&#xff1a;解锁代码重用的金钥匙 在Swift编程的宏伟蓝图中&#xff0c;模块化不仅是提升代码组织性的关键&#xff0c;更是实现高效开发与维护的法宝。本文将深入探讨Swift模块化构建工具的使用&#xff0c;揭示如何通过模块化将代码转化为可…...

【计算机网络】CIDR无分类编址知识学习

文章目录 1、CIDR引入的背景2、CIDR是什么&#xff1f;2.1 CIDR的2个特点2.2 CIDR斜线记法注意区分细节2.3 路由聚合or构成超网2.4 CIDR里面的掩码&#xff08;不是叫子网掩码)2.5 CIDR几种等效的记法形式2.6 对于”网络前缀“不是8的整数倍时候&#xff0c;要多加注意 3、CIDR…...

JavaScript 详解

第一章 JavaScript简介 为什么学习javascript &#xff1f; JavaScript 是全球最流行的编程语言。 JavaScript 是属于 Web 的编程语言。 JavaScript 是 web 开发者必学的三种语言之一&#xff1a; HTML 定义网页的内容 CSS 规定网页的布局 JavaScript 对网页行为进行编程 …...

运维实践01-安装OpenJDK

前几天逛知乎&#xff0c;有个问题是如何成为一个优秀的运维工程师&#xff0c;有个回答是让自己搞清楚如下几件事情。 首先&#xff0c;搭4台Linux的服务器。然后完成如下操作 批量安装最新版OpenJDK安装部署elastic search集群安装部署mysql9.0&#xff0c;实现一主三备。安…...

Windows下,C# 通过FastDDS高效通信

目录 1、安装FastDDS 库2、使用IDL定义自己的数据格式3、生成DLL3.1 托管 &#xff08;Managed&#xff09;模式3.2 非托管 &#xff08;Unmanaged&#xff09;模式 -- 可用于Unity 代码示例 eprosima Fast DDS is a C implementation of the DDS (Data Distribution Service) …...

【模型】ResNet

ResNet&#xff08;Residual Network&#xff0c;残差网络&#xff09;是一种用于图像识别等任务的深度神经网络架构&#xff0c;由何凯明等人于2015年提出。它在计算机视觉领域中具有重要意义&#xff0c;因为它解决了随着网络层数加深而导致的“梯度消失”或“梯度爆炸”问题…...

Objective-C中NSExpression与NSPredicate的协同艺术

标题&#xff1a;Objective-C中NSExpression与NSPredicate的协同艺术 引言 在Objective-C的丰富生态中&#xff0c;NSExpression和NSPredicate是两个强大的工具&#xff0c;它们在处理数据集合和执行复杂查询时发挥着关键作用。本文将深入探讨这两个API的协同工作方式&#x…...

别再只会用ActivePart了!CATIA二次开发中,如何用C#递归遍历任意复杂结构树?

CATIA二次开发进阶&#xff1a;用C#递归算法征服任意复杂装配树 在CATIA二次开发领域&#xff0c;ActivePart就像新手司机的自动挡——简单易用却限制重重。当面对包含数百个零件的飞机发动机装配体&#xff0c;或是横跨多个产品的汽车底盘系统时&#xff0c;仅能操作当前激活零…...

告别机械生硬感:我熬夜实测了4款英文降AI工具,教你搞定结构级优化

最近不少学弟学妹跟我倒苦水&#xff0c;说查重率好不容易降下来了&#xff0c;结果偏偏卡在了英文降ai率上&#xff0c;眼看交稿DDL越来越近&#xff0c;心里特别着急。 我太懂这种感受了&#xff0c;我当时也因为英文降aigc率踩过不少坑&#xff0c;自己连夜纯手动改&#x…...

DeepSeek API调用性能翻倍的7个隐藏配置:90%开发者从未启用的关键参数

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek API调用性能翻倍的7个隐藏配置&#xff1a;90%开发者从未启用的关键参数 DeepSeek API 的默认配置虽稳定&#xff0c;但远未释放其底层并发与缓存能力。通过调整七个常被忽略的 HTTP 请求头与…...

在Python项目中实现通过Taotoken轮询调用多个大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Python项目中实现通过Taotoken轮询调用多个大模型 基础教程类&#xff0c;面向中高级开发者。当你在构建一个需要灵活调用不同大…...

R3nzSkin英雄联盟皮肤修改器:深入解析开源内存注入技术实现

R3nzSkin英雄联盟皮肤修改器&#xff1a;深入解析开源内存注入技术实现 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin R3nzSkin 是一款基于内存注入技术的英雄联盟皮肤修改工具&#xff…...

CANoe各版本软件包怎么找?从Demo到Full Installer的下载指南与版本选择建议

CANoe版本管理与资源获取全攻略&#xff1a;从Demo到Full Installer的深度实践指南 在汽车电子开发与测试领域&#xff0c;Vector公司的CANoe软件堪称行业标准工具。但许多工程师在实际工作中常遇到这样的困境&#xff1a;项目需要特定历史版本进行兼容性测试&#xff0c;而官网…...

5 月 8 日 AIoT 双标落地,中国智能基础设施建设开启十年竞速!

AIoT 产业里程碑&#xff1a;5 月 8 日双标落地2026 年 5 月 8 日&#xff0c;注定会被写进中国 AIoT 产业的发展史。多个国家级部委在同一天落下两枚关乎未来十年的战略锚点。第一枚&#xff0c;是国家网信办、国家发展改革委、工业和信息化部联合印发的 《智能体规范应用与创…...

MUMmer4 v4.0.0技术升级:基因组比对工具标准化与容器化部署深度解析

MUMmer4 v4.0.0技术升级&#xff1a;基因组比对工具标准化与容器化部署深度解析 【免费下载链接】mummer Mummer alignment tool 项目地址: https://gitcode.com/gh_mirrors/mu/mummer MUMmer4作为生物信息学领域广泛使用的基因组比对工具&#xff0c;最新发布的v4.0.0版…...

如何用Obsidian主页插件打造你的专属数字工作台?

如何用Obsidian主页插件打造你的专属数字工作台&#xff1f; 【免费下载链接】obsidian-homepage Obsidian homepage - Minimal and aesthetic template (with my unique features) 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian-homepage 你是否厌倦了每次打…...

第13天:常用数据结构之字典

Python学习100天(从入门到精通系列文章) 文章目录 Python学习100天(从入门到精通系列文章) 前言 一、为什么需要字典? 1.1 列表、元组、集合的局限性 1.2 字典的优势 二、创建和使用字典 2.1 使用字面量语法创建字典 2.2 使用 dict 函数创建字典 三、字典的常用操作 3.1 访…...