news 2026/6/15 16:12:31

【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/6/10 12:49:15

Z-Image-Turbo启动报错?supervisorctl start命令执行失败排查教程

Z-Image-Turbo启动报错?supervisorctl start命令执行失败排查教程 1. 引言 1.1 业务场景描述 Z-Image-Turbo 是阿里巴巴通义实验室开源的高效AI图像生成模型,作为 Z-Image 的知识蒸馏版本,它在保持高质量图像输出的同时大幅提升了推理速度…

作者头像 李华
网站建设 2026/6/15 13:50:31

求职简历照片烦恼终结者!AI工坊实战应用案例分享

求职简历照片烦恼终结者!AI工坊实战应用案例分享 1. 引言:证件照制作的现实痛点与AI破局 在求职、考证、签证等场景中,一张合规、清晰、专业的证件照是不可或缺的“第一印象”。然而,传统获取方式存在诸多不便: 前往…

作者头像 李华
网站建设 2026/5/20 9:12:25

Qwen3-Reranker-0.6B实战案例:云端10分钟上手,2块钱低成本验证

Qwen3-Reranker-0.6B实战案例:云端10分钟上手,2块钱低成本验证 你是不是也遇到过这样的情况?作为产品经理,看到竞品在搜索结果排序、推荐系统或问答匹配上用了“重排序”技术,用户体验明显提升,心里也开始…

作者头像 李华
网站建设 2026/6/15 10:41:59

Qwen-Image-2512-ComfyUI部署要点:依赖库安装与版本匹配

Qwen-Image-2512-ComfyUI部署要点:依赖库安装与版本匹配 1. 引言 1.1 业务场景描述 随着多模态生成模型的快速发展,图像生成技术在设计、内容创作和AI艺术领域展现出巨大潜力。阿里云推出的Qwen-Image-2512作为其通义千问系列中的最新图像生成模型&am…

作者头像 李华
网站建设 2026/6/15 11:41:44

HunyuanVideo-Foley恐怖氛围:阴森背景音与突发惊吓音效设计

HunyuanVideo-Foley恐怖氛围:阴森背景音与突发惊吓音效设计 1. 技术背景与应用场景 随着AI生成技术在多媒体领域的深入发展,音效自动生成正成为视频制作流程中不可或缺的一环。传统音效设计依赖专业音频工程师手动匹配动作与声音,耗时且成本…

作者头像 李华