使用video_player跳转页面后音频仍播放的问题求助
问题分析与解决方案
你的问题核心是:通过弹窗跳转页面时,原页面的视频播放器资源没被正确释放——直接返回时页面会触发销毁生命周期,自动执行播放器的dispose;但弹窗跳转时原页面还保留在路由栈中,不会触发页面的dispose,导致播放器持续运行发声。
给你几个可行的解决办法:
在弹窗的跳转按钮点击事件里,主动调用播放器的暂停和释放方法。比如你封装的播放器类可以暴露一个
stopAndDispose()方法,示例代码如下:void stopAndDispose() { if (_controller != null) { _controller.pause(); _controller.dispose(); } }然后在弹窗确认跳转时,先调用这个方法,再执行
Navigator.push()之类的跳转逻辑。如果用
WillPopScope拦截返回键弹出弹窗,不要只依赖页面的dispose()来释放播放器。因为弹窗跳转后原页面未被销毁,dispose()不会触发,必须手动触发资源释放。若业务允许,可改用
Navigator.pushReplacement()替换路由,这种方式会销毁原页面,触发dispose生命周期,自然能释放播放器资源。
内容的提问来源于stack exchange,提问作者viki
相关产品推荐
相关产品推荐

