Flutter Pod Player异常:拖动进度条后音频失真、视频卡顿
问题解决思路
1. 优化监听函数,减少不必要的UI重绘
你的_listner函数每次都会触发setState,哪怕播放状态没有变化,这会导致UI频繁重绘,加重跳转时的性能负担。修改监听逻辑,只在播放状态确实改变时才更新状态:
void _listner() { final newPlayingState = controller.isVideoPlaying; if (newPlayingState != isVideoPlaying) { isVideoPlaying = newPlayingState; if (mounted) setState(() {}); } }
2. 移除互斥的视频比例属性
matchFrameAspectRatioToVideo和matchVideoAspectRatioToFrame是互斥属性,同时设为true会导致布局计算冲突,影响播放流畅度。根据需求保留其中一个即可,比如保留matchVideoAspectRatioToFrame:
PodVideoPlayer( alwaysShowProgressBar: alwaysShowProgressBar, controller: controller, matchVideoAspectRatioToFrame: true, videoTitle: videoTitle, ),
3. 调整控制器初始化顺序
确保控制器初始化完成后再添加监听,避免监听触发时机异常:
@override void initState() { super.initState(); controller = PodPlayerController( playVideoFrom: PlayVideoFrom.youtube('https://youtu.be/TBTgQbjRsqg'), ); controller.initialise().then((value) { setState(() { isVideoPlaying = controller.isVideoPlaying; }); controller.addListener(_listner); }); }
4. 额外排查方向
如果以上修改后问题仍存在,可以尝试:
- 检查PodPlayer库是否为最新版本,更新到最新版修复已知的播放跳转bug
- 测试不同的YouTube视频链接,排除视频源本身的问题
- 确保设备有足够的内存和网络带宽,跳转时需要重新缓冲视频片段
内容的提问来源于stack exchange,提问作者Manish Tiwari
相关产品推荐
相关产品推荐

