如何选择图片和视频

news2024/9/20 0:44:52

文章目录

  • 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包可以获取到文件的类型;
  • 显示图片或者播放视频文件前需要检查文件路径的可靠性,不然可能无法显示图片或者无法播放视频;
    看官们,与"如何混合选择图片和视频文件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android逆向题解-Illusion-难度6

jeb反编译 s 是用户输入&#xff0c;s1 是加密后flag&#xff1a; KuG_V9v(yGS 传入Native函数 CheckFlag IDA分析Native函数 注意这里有一个陷阱&#xff0c;CheckFlag有静态注册函数和动态注册函数&#xff0c;会执行动态注册的函数。 a2 93 只会走sub_1028 sub_102…

如何找IEEE论文中的作者指南(INFORMATION FOR AUTHORS)

文章目录 0.为什么需要作者指南1.进入所要发表期刊的官网并找到作者指南1.1百度直接搜索Transactions on Cybernetics1.2 点击About Journal进入并点击左下角Publication Details1.3 展开后点击Informations for author1.4 下载作者指南 2.结果显示 0.为什么需要作者指南 说明你…

STM32CubleMX创建FreeRtos工程教程,图文教程

前言&#xff1a;STM32CubeMX 是一个开发工具&#xff0c;它已经将 FreeRTOS 这个实时操作系统&#xff08;RTOS&#xff09;集成到其工具中。换句话说&#xff0c;通过 STM32CubeMX&#xff0c;可以非常方便地为 STM32 微控制器生成配置代码&#xff0c;其中包括对 FreeRTOS 的…

进阶SpringBoot之员工管理系统(5)展示员工列表和添加员工

Employee.java&#xff1a;模拟员工表 package com.demo.web.pojo;import lombok.Data; import lombok.NoArgsConstructor;import java.util.Date;//员工表 Data NoArgsConstructor public class Employee {private Integer id;private String lastName;private String email;…

第十五章 数据管理成熟度评估5分

15.0 语境关系图 活动&#xff1a; 计划评估活动&#xff08;P&#xff09;。进行成熟度评估&#xff08;C&#xff09;。拟定建议&#xff08;D&#xff09;。制定有针对性的改进计划&#xff08;P&#xff09;。 5. 重新评估成熟度&#xff08;C&#xff09; 应定期进行重新…

18308 最长公共子序列长度

### 分析 1. **问题描述**&#xff1a; - 给定两个字符串&#xff0c;要求找到它们的最长公共子序列的长度。 2. **解决方案**&#xff1a; - 使用动态规划&#xff08;Dynamic Programming, DP&#xff09;来解决这个问题。 - 定义一个二维数组dp&#xff0c;其中d…

使用AWS Lambda轻松开启Amazon Rekognition之旅

这是本系列文章的第一篇&#xff0c;旨在通过动手实践&#xff0c;帮助大家学习亚马逊云科技的生成式AI相关技能。通过这些文章&#xff0c;大家将掌握如何利用亚马逊云科技的各类服务来应用AI技术。 那么让我们开始今天的内容吧&#xff01; 介绍 什么是Amazon Rekognition&…

Java基础之循环嵌套

循环嵌套 在一个循环内部可以嵌套另一个或多个循环。 外部循环每执行1次&#xff0c;内层循环会执行1轮(全部)。 案例1&#xff1a; 连续3天&#xff0c;每天都要表白5次。 package com.briup.chap03;public class Test03_Nest {public static void main(String[] args) {…

MyBatis-Plus 自动填充字段详细教程

所以&#xff0c;接受事实&#xff0c;调整下略微悲观的态度。未来&#xff0c;也不一定就只会发生不好的变化。这变化&#xff0c;说不定也有好的&#xff0c;不是吗&#xff1f; 今天编写一个详细的教程来介绍如何在 Spring Boot 项目中使用 MyBatis-Plus 实现自动填充时间字…

补充线程结束方式,资源回收与线程的相互竞争

一.补充线程结束的方式 1.pthread_exit //pthread_jion 2.从线程执行函数中return //此时效果等价于pthread_exit 3. int pthread_ cancel &#xff08;pthread _ t thread&#xff09; 功能&#xff1a;发送取消请求 参数&#xff1a;thread 表示要发送的线程tid号 4.…

cv2,PIL绘制矩形框与图片的切片(易错)

目录 1. cv2绘制矩形框代码 2. PIL绘制矩形 3. cv2图片的切片 1. cv2绘制矩形框 import cv2# 读取图像 img cv2.imread(img.png)# 绘制矩形框 cv2.rectangle(img, (100, 200), (300, 300), (0, 255, 0), 3)# 显示图像 cv2.imshow(Image with Rectangle, img) cv2.waitKey(0…

LeetCode.20.有效的括号

题目描述&#xff1a; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有…

云原生和安装Ubuntu 22系统

一.云原生简介 2004年开始&#xff0c;Google已在内部大规模地使用容器技术。 2008年&#xff0c;Google将 Cgroups合并进入了Linux内核。2013年&#xff0c;Docker项目正式发布。2014年&#xff0c;Kubernetes项目正式发布。2015年&#xff0c;由Google、Redhat 以及微软等大…

【电路笔记】-π 型衰减器

π 型衰减器 文章目录 π 型衰减器1、概述2、等阻抗π-型衰减器3、π-型衰减器示例14、不等阻抗π-型衰减器5、π-型衰减器示例26、平衡π-型衰减器π-型衰减器常用于射频和微波传输线路中,可以是平衡或非平衡设计 1、概述 π-型衰减器之所以如此命名,是因为其基本布局和设计…

图书借阅会员员工管理小程序开发

图书借阅微信小程序全面升级方案 本图书借阅微信小程序旨在打造一站式、高效便捷的图书管理与借阅平台&#xff0c;支持多书馆无缝切换与一键同步图书信息&#xff0c;为会员提供流畅的在线借书体验&#xff0c;同时赋予员工强大的管理工具&#xff0c;确保从会员到书馆的每一…

File的概述和构造方法

一.路径&#xff1a; 相对路径开头不带盘符。 二.File&#xff1a; 1.File对象&#xff1a; File对象就表示一个路径&#xff0c;可以是文件的路径&#xff0c;也可以是文件夹的路径&#xff0c; 这个路径可以是存在的&#xff0c;也可以是不存在的。 2.File对象常见的构造…

C:指针学习-指针变量—学习笔记

今日伊雷娜&#xff1a; 目录 前言&#xff1a; 1、字符指针变量 1.1 使用字符指针存放字符 1.2 使用字符指针变量存放字符串 2、数组指针变量 2.1 什么是数组指针变量&#xff1f; 2.2 数组指针变量初始化 2.3 关于数组指针类型的解析 3、函数指针变量 3.1 函数地址 …

如何将CSDN文章导出为pdf文件

第一步&#xff1a; 打开想要导出的页面&#xff0c;空白处点击鼠标右键⇒点击“检查”或“check”&#xff0c;或直接在页面按F12键。 第二步&#xff1a; 复制以下代码粘贴到控制台&#xff0c;并按回车。 若提示让输入“允许粘贴”或“allow pasting”&#xff0c;按提示…

InnoDB锁机制和事务管理介绍_案例解答

前言 本文对《Innodb 锁机制和事务管理介绍》这篇文章中的思考题进行解答。查看完解答后如果对原理有疑问的&#xff0c;可以重新看下原文帮助理解。 初始化信息 验证环境&#xff1a;8.0.28 MySQL Community Server&#xff0c;InnoDB引擎&#xff0c;RR隔离级别。 初始化信…

苍穹外卖项目DAY03

苍穹外卖项目Day03 1、菜品管理 1.1、公共字段自动填充 1.1.1、问题分析 业务表中的公共字段&#xff1a; 问题&#xff1a;代码冗余、不便于后期维护 1.1.2、实现思路 自定义注解AutoFill&#xff0c;用于标识需要进行公共字段自动填充的方法自定义切面类AutoFillAspect&…