flutter flutter_screenutil视频播放

Flutter 移动端开发必备第三方框架大全 Flutter 丰富的第三方生态大大提升了开发效率。随着 Flutter 生态的发展,也会有更多优秀的框架出现,建议持续关注 pub.dev 上的热门趋势。希望这份整理对你的 Flutter 移动端开发有所帮助!如果有特别的需求场景,可以深入探索特定领域的专业框架。 阅读详情
  1. 安装插件包
    在这里插入图片描述
  2. 使用
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:video_player/video_player.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';

class VideoPlayerScreen extends StatefulWidget {
  VideoPlayerScreen({Key key, this.file}) : super(key: key);
  final file;
  @override
  _VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
  VideoPlayerController _controller;
  Future<void> _initializeVideoPlayerFuture;
  var dura;
  String fileName = '';
  @override
  void initState() {
    EasyLoading.show();
    // Create and store the VideoPlayerController. The VideoPlayerController
    // offers several different constructors to play videos from assets, files,
    // or the internet.
    fileName = widget.file["name"];
    _controller = VideoPlayerController.network('http://xxx.xx.com/file-api/file/file/download?url=group1/M00/00/34/rBo-5WDQC6OEdu4lAAAAAJbtHEc842.mp4&fileName=getFile.mp4'
        );

    // Initialize the controller and store the Future for later use.
    _initializeVideoPlayerFuture = _controller.initialize();

    // Use the controller to loop the video.
    _controller.setLooping(true);

    super.initState();
    //执行监听,只要有内容就会刷新
    _controller.addListener(() {
      setState(() {
        //进度条的播放进度,用当前播放时间除视频总长度得到
        dura = _controller.value.position.inSeconds /
            _controller.value.duration.inSeconds;
      });
    });
    // _controller.play();
  }

  @override
  void dispose() {
    // Ensure disposing of the VideoPlayerController to free up resources.
    _controller.dispose();

    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    EasyLoading.dismiss();
    return Container(
        height: 220.h,
        width: 340.w,
        child: InkWell(
            child: Stack(
          alignment: Alignment.center,
          fit: StackFit.expand,
          children: [
            Container(
              height: 220.h,
              width: 340.w,
              child: AspectRatio(
                  aspectRatio: _controller.value.aspectRatio,
                  // Use the VideoPlayer widget to display the video.
                  child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Container(
                          height: 220.h,
                          width: 340.w,
                          margin: EdgeInsets.fromLTRB(10.w, 0.h, 10.w, 0),
                          child: ClipRRect(
                            borderRadius: BorderRadius.circular(10),
                            child: VideoPlayer(_controller),
                          ),
                        ),
                      ])),
            ),
            Positioned(
                child: FlatButton(
              child: Icon(
                  _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
                  size: 30,
                  color: ColorUtil.fromHex('#ffffff')),
              onPressed: () {
                setState(() {
                  // If the video is playing, pause it.
                  if (_controller.value.isPlaying) {
                    _controller.pause();
                  } else {
                    // If the video is paused, play it.
                    _controller.play();
                  }
                });
              },
            )),
            Positioned(
                left: 200.w,
                top: 160.h,
                child: FlatButton(
                  child: Icon(Icons.crop_free_outlined,
                      size: 20, color: ColorUtil.fromHex('#ffffff')),
                  onPressed: () {
                    _controller.pause();
                    Navigator.pushNamed(context, '/VideoFullScreen',
                        arguments: widget.file);
                  },
                )),
          ],
        )));
  }
}

QQ技术交流群:707 196 135  (大前端技术交流群)

【Flutter】跨设备适配实战:flutter_screenutil 插件深度解析 本文深度解析了Flutter开发中跨设备适配的实战方案,重点介绍了flutter_screenutil插件的使用技巧。通过详细的配置说明和实战案例,帮助开发者解决不同屏幕尺寸的UI适配问题,提升应用在各种设备上的显示效果。特别强调了屏幕像素适配的关键技术和常见问题的解决方案。 阅读详情

相关推荐

Flutter跨端开发实战:从环境搭建到性能优化的完整项目指南

跨平台移动应用开发已成为现代软件工程的重要方向,它通过一套代码库实现多端部署,大幅提升了开发效率和产品一致性。其核心原理在于利用统一的渲染引擎和框架层,桥接不同操作系统的原生能力。这项技术的核心价值在于平衡开发效率、性能表现与原生体验,尤其适用于需要快速迭代和强交互性的应用场景。在众多技术方案中,Flutter凭借其高性能的Skia渲染引擎和响应式框架脱颖而出,成为构建如MindFlow这类个人效率工具的理想选择。本文基于Flutter开发实践,深入探讨了如何通过BLoC状态管理、Dio网络层封装和Hive

weixin_34008784的博客 349

Flutter入门系列-VideoPlayer在列表使用

一、依赖 dependencies: video_player: ^2.2.3 二、代码 class VideoPlayer extends StatefulWidget { /// Uses the given [controller] for all video rendered in this widget. VideoPlayer(this.controller); /// The [VideoPlayerController] responsible for the v

好好学习,天天向上 4844

Flutter横屏适配全攻略:从基础配置到原生优化

本文全面解析Flutter横屏适配的最佳实践,从基础配置到原生优化,涵盖SystemChrome设置、原生平台适配、UI布局调整及性能优化等关键技巧。特别针对视频播放器、游戏开发等场景提供实用解决方案,帮助开发者高效实现横竖屏切换功能。

weixin_42522167的博客 188

Flutter使用video_player实现视频播放

1.完成flutter视频播放。2.解决flutter视频播放问题

lin19991222的博客 1818

【SAP-MDG】工作流任务配置实战:从基础配置到代理分配详解

本文详细解析了SAP MDG工作流任务配置的全流程,从基础配置到代理分配的关键操作。通过实战案例和最佳实践,帮助用户掌握Configure Workflow Tasks的核心技巧,包括环境检查、代理分配、SWDD事务码使用及常见问题排查,提升主数据管理效率。

weixin_33738555的博客 248

构建多节点AI代理网络:OpenClaw协同框架与实战部署指南

在分布式系统与AI代理技术领域,多节点协同是提升智能体能力与扩展性的核心挑战。其原理在于通过设计清晰的通信协议与数据同步机制,使分散的智能体能够共享状态、知识与技能,从而实现1+1>2的群体智能。这一技术价值在于突破了单点AI的能力上限,为构建复杂、鲁棒且可扩展的自动化系统提供了基础。典型的应用场景包括跨设备任务编排、企业级工作流自动化以及大规模AI代理集群的管理。本文聚焦于OpenClaw这一开源AI代理框架,深入探讨如何利用模块化设计(如网状网络与任务控制中心)实现记忆共享与统一调度,解决多网关协同中的

weixin_42521032的博客 298

flutter系列之:在flutter中使用媒体播放器

现在的app功能越来越强大,除了基本的图文之外,还需要各种各样的其他的功能,比如视频,和直播。直播可能会比较复杂,因为涉及到了拉流和推流,需要服务器端的支持,但是视频播放就比较简单了,那么如何在flutter中使用媒体播放器呢?一起来看看吧。这样一个可以播放外部视频的app就做好了,运行之后它的界面是这样的:大家可以在这个播放器的基础上进行扩张,一个属于你自己的视频APP就完成了。

程序那些事 4233

深入理解搜索引擎——搜索评价指标

    搜索引擎,在做好query理解、索引召回以及排序模型之后,就能直接推上线了吗?答案是否定的,还需对其性能和质量进行评测。性能无非是对时间和空间的运行效率作评测,不细讲,今天讲讲搜索引擎的质量评测。通过质量评测,可根据评测结果不断的进行改进和研究,也可以验证搜索引擎在真实环境中运行时的实际效果。因此,搜索引擎的质量评测对于整个系统的研制和发展是至关重要的。     那么有哪些指标可以评估搜索引擎的结果质量呢?最广为人知的

我是药老的博客 4485

Flutter视频播放、Flutter VideoPlayer 视频播详解

在 android 目录下的 AndroidManifest.xml 清单文件中配置网络请求权限以及http的访问权限。视频资源的加载以及播放控制全部是通过 VideoPlayerController来操作的。networkSecurityConfig 配置的是 http访问权限。3.3 视频播放相关控制。3.1 视频资源的加载。2 播放视频前的准备。2.1 网络访问权限。3.2 视频播放组件。

杰森丶郭达斯坦森的博客 6032

AMD SDP 优快云 系列文章设计

摘要 本文档规划了7篇AMD SDP协议解析系列文章的技术博客设计方案。基于《Scalable Data Port (SDP) Specification》1.5.0版本(122页),面向SoC/NoC领域的RTL设计与验证工程师,构建从基础概念到验证实现的知识体系。 系列文章严格遵循协议规范边界,采用五类证据标签区分内容来源(规范原文、勘误、验证推导等),禁止补充未定义的实现细节。包含端口控制、事务传输、一致性协议等核心内容,最终落实到验证平台设计与覆盖率模型。 每篇文章采用统一模板:明确规范依据、问题导

元直的博客 157

嵌入式工程师必学(52):储能系统ESS

能量存储系统(ESS,Energystoragesystems)存在于各种各样的尺寸、形状和技术中。储能系统的技术,即基本的储能机制,自然会影响其重要特性,包括成本、安全性、性能、可靠性和寿命。然而,尽管基础技术很重要,但一个成功的储能项目依赖于对该技术的彻底和深思熟虑的实施,以实现项目的目标。成功的实施取决于储能系统的架构和组装情况。系统的体系结构可以决定其性能和可靠性,与它所使用的技术一致,甚至与之无关。

码农17年的博客 1441

Flutter 中视频的播放

Flutter video_player 视频控件

唐僧的专栏 4065

基于咸鱼最新九宫格图标验证码的语义增强模型识别

本文探讨了破解复杂验证码的技术思路,重点分析了某平台的九宫格验证码应对策略。作者提出通过图像语义抽取和增强技术来扩充数据集:先采集少量真实样本,利用形态学操作进行前增强生成变形图像,再通过叠加背景噪声进行后增强。同时强调真实数据集的重要性,建议采用真实+生成数据的混合训练方法。实验表明该方法可使模型准确率达到95%以上,但作者特别声明本文仅供技术研究,严禁用于非法用途。

码王吴彦祖的博客 600

flutter 常用库总结

cupertino_icons: ^1.0.2 路由管理 fluro: ^2.0.3 https://www.jianshu.com/p/e575787d173c https://www.jianshu.com/p/ec72e9828fa1 flutter 常用工具类 https://pub.flutter-io.cn/packages/flustars flustars: ^2.0.1 https://gitee.com/wjyefeng/flutter_flustars https://www.jian

vae260772的专栏 2643

车辆网络安全ISO/SAE 21434解读(一)概述

ISO/SAE 21434 《道路车辆 网络安全工程》是SAE和ISO共同制定的一项针对道路车辆的网络安全标准,它是一个面向汽车行业全供应链(OEM及各级供应商)的车辆网络安全管理指导文件

xiaoxiabang的博客 8420

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Flutter for OpenHarmony软件开发助手app实战视频教程播放器实现

本文介绍了使用Flutter开发OpenHarmony视频教程播放器的实现方法。主要内容包括: 页面结构设计:采用StatefulWidget处理视频播放器的动态状态,包括课程分类、播放列表和学习进度等核心功能。 数据模型设计:构建了CourseCategory、VideoCourse和VideoLesson等完整的数据结构,涵盖课程分类、视频详情和学习状态标记。 界面实现:使用Tab布局将功能分为课程列表、分类浏览和学习记录三个部分,通过卡片式设计展示课程内容。 关键功能:实现了课程缩略图展示、免费/付费

wYb123_456的博客 948

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Flutter屏幕适配终极指南:flutter_screenutil插件从入门到精通(附实战代码)

本文详细介绍了Flutter屏幕适配的核心工具flutter_screenutil插件,从基础配置到高级技巧,帮助开发者解决不同设备尺寸和分辨率的适配问题。通过实战代码演示,展示了如何实现响应式布局、字体适配和复杂组件适配,提升Flutter应用在不同设备上的视觉效果一致性。

w3x4y的博客 213

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Flutter实现直播间礼物收发

来构建收到的礼物列表,并根据礼物数目构建展示文本。例如,如果用户收到多次相同礼物,则文本为“礼物名称接收(次数)”。方法中,我们模拟将礼物发送到服务器,并且如果用户选择了连续发送,我们将延迟一秒钟后再次调用该方法以持续发送礼物。方法中,我们检查是否已经收到过相同的礼物,如果是,则增加现有礼物的数量;否则,将新礼物添加到列表中。等组件来获取用户选择的礼物和发送数量。在这个示例中,我们使用了 Flutter 的。组件来允许用户选择是否连续发送礼物。列表来追踪用户收到的礼物。在这个示例中,我们使用了一个。

weixin_43169271的博客 582

Flutter进阶第8篇:实现视频播放

效果图: 引入第三方库:chewie import 'package:flutter/material.dart'; import 'package:video_player/video_player.dart'; import 'package:chewie/chewie.dart'; class ChewieVideoDemo extends StatefulWidget { Che...

qq_27494201的博客 1117

Flutter:基于video_player实现视频相关手势控制、全屏播放

简介 最近公司需要开发视频播放的功能,官方提供的video_player除了视频播放功能就没有提供其他的控制功能,包括最基本的全屏播放功能。同时也比较了一下第三方组件也不是很能满足需求。那我们就只好自己动手在video_player基础上进行改造。由于使用的纯flutter进行开发android、ios上界面一致。废话不多说直接上图: 1. 主要功能 轻触屏幕弹出控制按钮(进度条、全屏播放按钮、暂停播放按钮、标题) 右侧滑动控制音量 左侧滑动控制亮度 水平滑动快进快退 双...

大灰狼的小绵羊哥哥的博客 1万+

Flutter:video_player视频播放插件使用

Flutter:video_player视频播放插件使用 此官方视频插件只有视频显示功能,拖动条、全屏、音量调节、亮度调节等需要自已另外实现。

a526001650a的专栏 2615

flutter 视频播放

Flutter 是 Google 开发的跨平台移动应用开发框架。在 Flutter 中,可以使用 video_player 包来播放视频。 要使用 video_player 包,首先需要在项目的 pubspec.yaml 文件中添加依赖: dependencies: flutter: sdk: flutter video_player: ^0.10.11+1 然后,就可以在你的 ...

weixin_35756637的博客 807

Flutter视频播放、Flutter VideoPlayer 视频播放组件精要

在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。 优美的音乐节奏带你浏览这个效果的编码过程 坚持每一天,是每个有理想青年的追求 追寻年轻人的脚步,也许你的答案就在这里 1 添加依赖 pub仓库地址在这里:点击查看pub仓库 # 视频播放 video_player: ^1.0.1 2 播放视频前的准备 2.1 网络访问权.

代码小疯子 8332

flutter 视频解码器fijkplayer使用

本人做视频监控项目的时候,需要去展示视频流到用户端,一开始使用flutter自带的VideoPlayer播放监控视频,一开始没有发现有什么问题,因为使用多的是Android模拟器,一直没有使用iso模拟器或者真机测试能不能播放,直到开发接近尾声,在ios模拟器上测试的时候发现了问题,视频流为H264的时候能正常播放,但是视频流为H265的时候一直转圈,模拟器和真机播放不了(Android模拟器和真机都是可以播放的)。后来就打算换一个三方插件来调整播放。这里是使用时候的代码。

杰森丶郭达斯坦森的博客 3414

Flutter调用摄像头录像及获取视频信息

一、前言 最近在做的一个app,有个需要是需要调起摄像头进行录像,同时提交时,后台需要知道视频的时长及大小。基于这个需求,所以总结一下开发记录 二、引用 1 image_picker 功能:调起摄像头,照片或视频拍摄和选取都可。 地址:https://pub.dev/packages/image_picker 2 video_player 功能:视频播放,这里主要用于解析视频。 地址:https://pub.dev/packages/video_player 三、使用 1 代码实现 import 'pack

鲸落 8514
上一篇: flutter使用shared_preferences本地存储基础信息
下一篇: flutter 高德地图渲染行走轨迹
bloxed
博客等级 码龄10年 263粉丝 192原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值