当前位置: 首页 > 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…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...