You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter just_audio插件停止功能失效问题求助

解决just_audio无法停止播放的问题

我正在开发一款戏剧场景用的跨平台音频播放应用,目前音频可正常播放,但调用停止功能时毫无反应。AudioPlayback类(audio_playback.dart)中用于停止播放的代码如下:

Future<void> stopAudio() async {
  debugPrint("Stopping audio playback");
  await player.stop();
}

停止按钮位于应用的播放控制栏组件中(非主body组件),调用上述stopAudio方法后,日志能打印"Stopping audio playback",但音频仍继续播放。尝试过在setState中包裹停止操作、调整async/await和then的写法,问题都没解决。

排查与解决方向:

  • 确认AudioPlayer实例一致性
    打印启动播放和调用停止时player的hashCode,检查是否为同一个实例。如果调用停止的实例和播放的实例不是同一个,自然无法终止播放。

  • 监听播放状态变化
    在AudioPlayback类中添加状态监听,验证stop()是否触发了状态更新:

    player.playbackEventStream.listen((event) {
      debugPrint("当前播放状态: ${event.processingState}");
    });
    

    如果调用stop()后状态无变化,说明player实例可能已被释放或初始化异常。

  • 排查组件间状态管理
    若AudioPlayback通过状态管理工具(如Provider、GetX)共享,确认实例是否正确传递。如果在调用停止的组件中新建了AudioPlayback实例,会导致停止操作作用在错误的实例上。

  • 尝试先暂停再停止
    部分场景下直接调用stop()可能失效,可以尝试组合操作:

    Future<void> stopAudio() async {
      debugPrint("Stopping audio playback");
      await player.pause();
      await player.stop();
      await player.seek(Duration.zero); // 可选:将进度重置到开头
    }
    
  • 检查版本兼容性
    确认just_audio版本与当前Flutter SDK版本兼容,部分旧版本存在停止播放的已知bug,可尝试升级到最新稳定版。

内容的提问来源于stack exchange,提问作者Ben Goldstone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:09:57