news 2026/4/3 4:42:08

【flutter better_player_plus实现普通播放器功能】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【flutter better_player_plus实现普通播放器功能】

引入better_player_plus: ^1.1.5

import'package:better_player_plus/better_player_plus.dart';lateBetterPlayerController_videoController;@overridevoidinitState(){// TODO: implement initStatesuper.initState();//BoxFit.contain + fullScreenByDefault=true + autoDetectFullscreenAspectRatio = true,设置后播放器播放时默认按视频的宽高比例放大填充父布局finalbetterPlayerConfiguration=BetterPlayerConfiguration(fit:BoxFit.contain,autoPlay:true,looping:true,fullScreenByDefault:true,autoDetectFullscreenAspectRatio:true,controlsConfiguration:constBetterPlayerControlsConfiguration(showControls:false,// 是否显示控制栏enableSkips:false,// 禁用快进/快退));_videoController=BetterPlayerController(betterPlayerConfiguration,betterPlayerDataSource:dataSource);_videoController.addEventsListener(_videoListener);}_videoListener(BetterPlayerEventevent)async{switch(event.betterPlayerEventType){caseBetterPlayerEventType.initialized:setState((){_isVideoInit=true;double?videoWidth=_videoController.videoPlayerController?.value.size?.width;double?videoHeight=_videoController.videoPlayerController?.value.size?.height;print('_videoWidth=$videoWidth_videoHeight=$videoHeight');if(videoWidth!=null&&videoHeight!=null){double aspectRatio=videoHeight/videoWidth;_logic.videoAspectRatio=aspectRatio;}_videoController.play();});break;caseBetterPlayerEventType.progress:Durationres=_videoController.videoPlayerController!.value.position;Duration?totalDuration=_videoController.videoPlayerController?.value.duration;if(_videoController.isPlaying()==true&&_key.currentState!=null){/// 减少build次数_key.currentState!.setPosition(position:res,totalDuration:totalDuration,);}break;caseBetterPlayerEventType.bufferingStart:_isBuffering=true;break;caseBetterPlayerEventType.bufferingEnd:_isBuffering=false;break;caseBetterPlayerEventType.exception:esLoadingToast('视频加载失败');print('视频播放器问题:${_videoController.videoPlayerController!.value.errorDescription}=====');break;default:break;}}@overridevoiddispose(){// TODO: implement dispose_videoController.removeEventsListener(_videoListener);_videoController.dispose();super.dispose();}@overrideWidgetbuild(BuildContextcontext){// TODO: implement buildreturnScaffold(backgroundColor:Colors.black,body:BetterPlayer(controller:_videoController),);}

只配置fit: BoxFit.contain时,播放时显示区域虽然按视频比例,但是不会尽可能大的充满屏幕

BoxFit.contain + fullScreenByDefault=true + autoDetectFullscreenAspectRatio = true,播放时显示区域按视频比例比例尽可能大的充满屏幕

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/29 22:51:36

GPEN图像增强保姆级教程:从环境部署到参数调优详细步骤

GPEN图像增强保姆级教程:从环境部署到参数调优详细步骤 1. 引言 随着深度学习在图像处理领域的广泛应用,基于AI的图像增强技术逐渐成为数字内容修复与优化的重要工具。GPEN(Generative Prior ENhancement)作为一种专注于人像增强…

作者头像 李华
网站建设 2026/3/14 21:24:54

BGE-M3实战案例:学术论文查重系统搭建详细步骤

BGE-M3实战案例:学术论文查重系统搭建详细步骤 1. 引言 1.1 学术查重的痛点与挑战 在高校和科研机构中,学术论文的原创性审查是保障学术诚信的重要环节。传统查重工具(如基于关键词匹配或n-gram重叠)往往只能识别字面重复&…

作者头像 李华
网站建设 2026/3/27 3:27:56

完整示例展示UDS 19服务在诊断开发中的通信时序

深入解析UDS 19服务:从通信时序到实战调试的完整闭环在汽车电子系统日益复杂的今天,一辆高端车型可能集成了上百个ECU(电子控制单元),每个模块都可能产生故障码。如何高效、准确地读取这些DTC(Diagnostic T…

作者头像 李华
网站建设 2026/4/1 2:00:10

Qwen3-4B-Instruct-2507代码详解:模型推理的优化实现

Qwen3-4B-Instruct-2507代码详解:模型推理的优化实现 1. 引言 1.1 技术背景与应用场景 随着大模型在端侧部署需求的不断增长,轻量化、高性能的小参数模型成为研究和工程落地的重点方向。传统大模型虽然性能强大,但受限于显存占用高、推理延…

作者头像 李华
网站建设 2026/4/1 9:36:24

用AI做系统引导:GLM-4.6V-Flash-WEB项目完整复现

用AI做系统引导:GLM-4.6V-Flash-WEB项目完整复现 1. 背景与技术趋势:从OCR到视觉理解的跃迁 在自动化系统维护和安装工具开发中,一个长期存在的挑战是如何让程序“理解”图形用户界面(GUI)。传统方法依赖坐标定位或基…

作者头像 李华
网站建设 2026/3/28 11:43:50

HexStrike AI 部署详细教程

HexStrike AI 部署指南HexStrike AI 的部署涉及环境配置、依赖安装、模型加载及运行等步骤。以下为详细流程:环境准备确保系统满足以下条件:操作系统:Linux(Ubuntu 20.04推荐)或 Windows(WSL2支持&#xff…

作者头像 李华