第二百八十八回
文章目录
- 1. 概念介绍
- 2. 使用方法
- 2.1 实现步骤
- 2.2 具体细节
- 3. 示例代码
- 4. 内容总结
我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。

1. 概念介绍
播放视频是我们常用的功能,不过Flutter官方SDK中没有提供这样的API,怎么办呢?官方也想到了这点,因此提供了video_player包供开发人员使用,本章回中将
详细介绍如何通过该包提供的API来播放视频。
2. 使用方法
2.1 实现步骤
下面是使用video_palyer包播放视频的详细步骤,请大家参考:
- 在yaml配置文件中添加包,并且获取包到项目中;
- 创建控制器对象,也就是包中提供的VideoPlayerController类的实例;
- 使用控制器对象初始化,并且设置声音等视频播放参数;
- 使用控制器对象创建视频播放器对象,也就是包中提供的VideoPlayer类的实例;
- 通过控制器对象操作视频,比较播放视频,暂停播放视频等;
- 视频播放完成后释放控制器相关资源;
2.2 具体细节
在上面介绍的步骤中还有一些细节需要说明,主要是创建控制器对象和创建视频播放器对象这两个步骤:
- 创建控制器对象需要使用VideoPlayerController的file()或者networkUrl()方法。这两个方法用来把本地存储中的视频文件,或者网络上的视频文件转换成
控制器对象,方法的参数是本地视频文件的绝对地址或者网络视频文件的链接,此外,播放网络视频时还需要在配置文件中添加网络权限; - 创建视频播放器对象时直接使用VideoPlayer类的构造方法就可以,该方法只有一个控制器类型的参数,把控制器对象传递给该方法就可以;
- 视频播放时有一定宽高比,最好在视频播放器外层嵌套一个AspectRatio组件,这样可以限制视频播放器的宽高比,进而达到良好的播放效果;
我们先用文本介绍这些细节内容,在后面的小节中将通过示例代码来演示。
3. 示例代码
///创建控制器对象并且进行初始化操作VideoPlayerController? _controller = VideoPlayerController.file(File(file_path));await _controller?.setVolume(0.0);await _controller?.initialize();await _controller?.setLooping(true);///创建视频播放器对象Center(///控制视频的宽高比child: AspectRatio(aspectRatio: controller!.value.aspectRatio,child: VideoPlayer(controller!),),);///通过按钮播放、暂停视频
Container(width: 64,color: Colors.green,child: IconButton(onPressed: () {setState(() {_controller!.value.isPlaying? _controller?.pause(): _controller?.play();});},icon: _controller == null? const Icon(Icons.video_call): (Icon(_controller!.value.isPlaying? Icons.pause: Icons.play_arrow)),),
),///释放控制器相关资源
void dispose() {_controller = null;super.dispose();
}
4. 内容总结
最后,我们对本章回的内容做一个全面总结:
- 在Flutter开发中需要使用三方包video_player来播放视频;
- 该包主要通过控制器和视频播放器两个类来播放视频;
- 控制器用来初始化视频文件,对视频文件进行播放,暂停等操作;
- 视频播放器主要用来播放视频文件,相当于提供一个播放窗口;
- 视频播放完成后要释放控制器相关的资源;
看官们,与"如何播放视频"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!
相关文章:
第二百八十八回
文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用…...
【日常学习笔记】gtest
https://zhuanlan.zhihu.com/p/369466622 int Factorial(int n) {int result 1;for (int i 1; i < n; i) {result * i;}return result; }TEST(TestSuiteName, TestName) 第一个参数可以表示为一个对某一个函数进行测试,第二个参数表示对这个函数测试时的分的几…...
go-zero配置DB的redis缓存
配置定义: # cat internal/config/config.go package configimport ("github.com/zeromicro/go-zero/rest""github.com/zeromicro/go-zero/core/stores/cache" )type Config struct {rest.RestConfCacheRedis cache.CacheConf }对应的配置文件…...
物理服务器
物理服务器 物理服务器是一种独立的、非虚拟化的计算机设备,它通常被用作高性能应用、数据库、存储和网络等关键业务应用的运行平台。物理服务器可以提供更高的处理能力、更好的安全性和可靠性,但需要用户自行维护和管理。 物理服务器的形式多种多样&…...
3.3 实验三:以太网链路聚合实验
HCIA-Datacom实验指导手册:3.3 实验三:以太网链路聚合实验 一、实验介绍:二、实验拓扑:三、实验目的:四、配置步骤:步骤 1 掌握使用手动模式配置链路聚合的方法步骤 2 掌握使用静态 LACP 模式配置链路聚合的…...
php mysql字段默认值使用问题
前提是使用了事务,在第一个阶段 是A表操作保存,第二阶段操作B表,操作B表的时候使用了A表的一个字段,这个字段在第一阶段没有设置值,保存的时候使用字段默认值。 【这种情况 最好是在第一阶段 把后面要使用的字段设置好…...
【linux】Debian防火墙
Debian系统默认没有安装防火墙,但用户可以根据需要自行选择并安装一个防火墙以增强系统安全性。 一、查看Debian 桌面系统的防火墙是否关闭 在Debian及其他基于Linux的桌面系统中,防火墙功能通常是由iptables或nftables规则集控制的,而ufw&…...
2022年至2023年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题
2022 年至 2023 年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题 一、 第一阶段竞赛项目试题 本文件为信息安全管理与评估项目竞赛第一阶段试题,第一阶段内容包 括:网络平台搭建、网络安全设备配置与防护。 本阶段比赛时间为 180 分钟…...
CC++内存管理【非常详细,对新手友好】
文章目录 一、程序内存划分1.基础知识2. 堆栈的区别3. 题目练手 二、C语言中动态内存管理方式三、C中动态内存管理方式1. new/delete操作内置类型2. new/delete操作自定义类型 四、operator new和operator delete函数1. 汇编查看编译器底层调用2. 透过源码分析两个全局函数 五、…...
022-安全开发-PHP应用留言板功能超全局变量数据库操作第三方插件引用
022-安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引用 #知识点: 1、PHP留言板前后端功能实现 2、数据库创建&架构&增删改查 3、内置超全局变量&HTML&JS混编 4、第三方应用插件&传参&对象调用 演示案例&a…...
大白话解析LevelDB 3: SST Compaction
SST Compaction 文章目录 SST Compaction什么是Compact SST什么时候触发Compact SST第一处 读取 Key 的时候第二处 使用迭代器遍历数据库时第三处 写入 Key 时第四处 刚打开数据库时 如何进行Compact SST计算Compaction范围进行Compaction创建一个迭代器用于读取Compaction范围…...
【Python】02快速上手爬虫案例二:搞定验证码
文章目录 前言1、不要相信什么验证码的库2、以古诗文网为例,获取验证码1)code_result.py2)gsw.py 前言 提示:以古诗文网为例,获取验证码: 登录:https://so.gushiwen.cn/user/login.aspx 1、不…...
C# 中的接口
简介 官方说明:接口定义协定。 实现该协定的任何 class 或 struct 必须提供接口中定义的成员的实现。 接口可为成员定义默认实现。 它还可以定义 static 成员,以便提供常见功能的单个实现。 从 C# 11 开始,接口可以定义 static abstract 或 …...
一篇文章带你了解C++中隐含的this指针
文章目录 一、this指针的引出二、this指针的特性【面试题】 一、this指针的引出 我们先来定义一个日期类Date,下面这段代码执行的结果是什么呢? class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}v…...
shardinig-JDBC二开-支持sharding-jdbc的配置文件接入到nacos
代码在 https://gitee.com/lbmb/mb-live-app 中 【mb-live-framework】 模块里面的【mb-live-framework-datasource-stater】 如果喜欢 希望大家给给star 项目还在持续更新中。 背景介绍: 因为近期在自己写一套直播项目。使用到了sharding-jdbc来做分库分表的组件…...
a-table自定义展开图标
原文来自:vue 修改ant中table表格的展开图标 树形表格expandIcon自定义图标 <template #expandIcon"props"><span v-if"props.record.children?.length > 0"><divv-if"props.expanded"style"display: inline…...
Kubernetes Ingress暴露应用的工作流程
文章目录 一、Igress是什么二、安装Igress Controller三、Service NodePort模式暴露Ingress Controller四、创建ingress 进行访问查看ingress controller生成的规则(两种类型通用) 五、HostNetwork模式暴露Ingress Controller总结: 一、Igress是什么 一般负载均衡器…...
Redis应用(1)缓存(1.2)------Redis三种缓存问题
三者出现的根本原因是:Redis缓存命中率下降,请求直接打到DB上了。 一、 缓存穿透: 1、定义: 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。…...
安全 专题
[实践总结] 日志注入问题(log4j2) [实践总结] Java 防止SQL注入的四种方案 [实践总结] 如何防护 order by 导致的SQL注入 [实践总结] 限制正则表达式匹配次数/时间 防止DoS攻击 [实践总结] java XML解析防止外部实体注入 [Ref] yaml.load的漏洞利用…...
自然语言处理-文本对分类或回归
我们研究了自然语言推断。它属于文本对分类,这是一种对文本进行分类的应用类型。 以一对文本作为输入但输出连续值,语义文本相似度是一个流行的“文本对回归”任务。 这项任务评估句子的语义相似度。例如,在语义文本相似度基准数据集&#x…...
终极指南:用Java打造你的专属微信机器人 - 深入解析wechat-api框架
终极指南:用Java打造你的专属微信机器人 - 深入解析wechat-api框架 【免费下载链接】wechat-api 🗯 wechat-api by java7. 项目地址: https://gitcode.com/gh_mirrors/we/wechat-api 想象一下这样的场景:每天早上7点,你的微…...
从‘丐版’到‘神板’:深度拆解Raspberry Pi Zero 2 W的散热设计与性能压榨指南
从‘丐版’到‘神板’:深度拆解Raspberry Pi Zero 2 W的散热设计与性能压榨指南 当一款信用卡大小的开发板搭载四核处理器时,散热与性能的平衡便成为硬件极客们最热衷的挑战。Raspberry Pi Zero 2 W以不到15美元的定价,却藏着令人惊喜的工程智…...
百考通:AI赋能设计都高效落地
在数字化时代,市场调研、产品设计、学术研究等场景中,问卷设计作为核心环节,直接影响着数据收集的质量与工作推进的效率。传统问卷设计往往面临流程繁琐、耗时耗力、问题设计不精准等痛点,而百考通(https://www.baikao…...
GIS开发必备:5分钟搞定EPSG3857转WGS84坐标转换(附proj4.js完整代码)
GIS开发实战:从原理到代码实现EPSG3857与WGS84的高效坐标转换 刚接触WebGIS开发的工程师们,常常会被各种坐标系搞得晕头转向。为什么高德地图上显示的位置和GPS设备采集的数据对不上?为什么Leaflet、OpenLayers这些库加载的瓦片地图坐标数值大…...
开发提效新组合:用Cursor生成代码片段,在快马一键集成与部署
最近在做一个数据整理的小工具时,发现了一个特别高效的工作流组合:先用Cursor快速生成核心代码片段,再用InsCode(快马)平台一键整合部署。整个过程就像搭积木一样顺畅,特别适合需要快速实现功能模块的场景。 需求分析 我们经常要处…...
OpenGL之标准化设备坐标(Normalized Device Coordinate =NDC)
NDC坐标本质是比例1. 设备无关性NDC 使图形渲染与屏幕分辨率无关。无论屏幕是 1280720 还是 19201080,同样的 NDC 坐标都会渲染出相同比例的图形(图形会随着分辨率变化而自动拉伸),表现如下:┌────────────…...
文明降级运动:回归纸笔抵抗AI监控
在AI技术席卷软件测试领域的浪潮中,一个看似“倒退”却极具战略意义的趋势正在兴起——文明降级运动。这场运动的核心是主动回归纸笔工具,以抵抗AI监控带来的系统性风险。作为软件测试从业者,我们身处技术前沿,见证了AI在缺陷预测…...
当孩子冲动行为影响学习,如何借助哈洛韦尔医生的情绪管理技巧?
如何有效应对孩子情绪管理困难,促进学习进步 面对孩子的情绪管理困难,家长和教育者可以采用一些实用的策略来帮助他们更好地表达情绪和应对挑战。首先,建立一个安全的环境非常重要,让孩子感到可以自由表达自己的情感而不必担心负面…...
STM32F103C8T6 DHT11温湿度监测系统 HAL库 CubeMX实战(避坑指南)
1. 项目背景与硬件选型 温湿度监测是物联网领域最基础也最实用的功能之一。我最近用STM32F103C8T6和DHT11搭建了一个环境监测节点,整个过程踩了不少坑,也积累了一些实战经验。这个方案特别适合需要低成本、快速上手的场景,比如智能家居、农业…...
springboot框架健康饮食营养管理信息系统
目录需求分析与系统设计技术栈选型与环境搭建核心功能实现数据可视化与报告生成测试与部署项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析与系统设计 明确健康饮食营养管理系统的核心需求,包括用户注册登录…...
