news 2026/5/30 22:12:50

【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/5/28 14:03:08

ES客户端与Kafka集成项目应用全面讲解

如何用好 ES 客户端与 Kafka 集成?一文讲透实时数据管道的实战要点你有没有遇到过这样的场景:线上服务日志疯狂增长,ELK 栈却频频告警“写入延迟飙升”?或者某次发布后发现部分日志没进 Kibana,排查半天才发现是消费者…

作者头像 李华
网站建设 2026/5/28 14:03:07

Google Earth Engine(GEE)使用说明

一、什么是 Google Earth Engine(GEE)Google Earth Engine(GEE) 是由 Google 开发并维护的基于云计算的地理空间大数据分析平台,集成了海量遥感影像数据、强大的分布式计算能力以及在线编程环境,支持用户对…

作者头像 李华
网站建设 2026/5/28 14:03:20

法律AI智能体架构师指南:提升法律服务效率的9大核心能力培养

法律AI智能体架构师指南:提升法律服务效率的9大核心能力培养 副标题:从需求拆解到落地优化,打造能解决实际问题的法律AI系统 一、摘要/引言:为什么法律AI需要“懂行”的架构师? 凌晨2点,某律所的王律师还在…

作者头像 李华
网站建设 2026/5/28 14:03:19

[特殊字符]_微服务架构下的性能调优实战[20260119171844]

作为一名经历过多个微服务架构项目的工程师,我深知在分布式环境下进行性能调优的复杂性。微服务架构虽然提供了良好的可扩展性和灵活性,但也带来了新的性能挑战。今天我要分享的是在微服务架构下进行性能调优的实战经验。 💡 微服务架构的性…

作者头像 李华
网站建设 2026/5/28 23:01:28

minidump文件解析完整指南:提取调用栈的系统方法

从崩溃现场到精准定位:深入掌握minidump调用栈解析实战 崩溃不可怕,可怕的是“不知道哪里崩了” 在Windows平台的C/C开发中,程序运行时突然退出、界面卡死或后台服务无故终止,是每个工程师都曾面对的噩梦。尤其当问题只出现在某个…

作者头像 李华
网站建设 2026/5/28 14:03:12

Qwen3-0.6B教学实验室方案:30学生并发,成本比机房低60%

Qwen3-0.6B教学实验室方案:30学生并发,成本比机房低60% 你是一位高校教师,正准备开设一门AI基础课程。班上有30名学生,人人都需要一个能跑大模型的实验环境。但现实很骨感:学校机房的显卡老旧,连最基础的Q…

作者头像 李华