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

Just Audio Flutter Plugin如何捕获播放列表的歌曲完成事件

just_audio 播放列表单首曲目播放完成事件获取方案

just_audio 原生支持两种方式捕获单首曲目播放完成的触发时机,可直接基于现有流监听实现,无需额外扩展:


方案1:监听currentIndex流(最简实现)

当你通过ConcatenatingAudioSource构建播放列表时,播放器的currentIndex会在曲目切换时自动更新,无论是播放完成自动切歌还是手动切歌都会触发该流,适合不需要区分切歌来源的场景:

  • 示例代码:
// 播放器初始化完成后添加监听
_player.currentIndexStream.listen((newIndex) {
  if (newIndex == null) return;
  // 此处触发切歌逻辑,newIndex为当前播放的最新曲目索引
  // 直接在该回调内更新UI、展示当前播放歌曲即可
});

方案2:结合processingState流监听(可区分自动/手动切歌)

如果你需要严格判定触发来源是「单首播放完成自动切歌」而非用户手动切歌,可以组合监听播放状态流:

  • 示例代码:
int? lastCompletedIndex;

// 监听播放状态
_player.processingStateStream.listen((state) {
  if (state == ProcessingState.completed) {
    // 记录播放完成的上一首曲目索引
    lastCompletedIndex = _player.currentIndex;
  }
});

// 结合索引变化判断切歌来源
_player.currentIndexStream.listen((newIndex) {
  if (newIndex == null || lastCompletedIndex == null) return;
  // 判定为上一首播放完成自动切到下一首
  if (newIndex == lastCompletedIndex! + 1) {
    // 执行UI更新逻辑
    lastCompletedIndex = null;
  }
});

注意:如果是播放列表最后一首播放完成,processingState会停留在completed状态,不会触发后续的currentIndex更新,可根据业务需求单独处理该场景。

内容的提问来源于stack exchange,提问作者Manish Buttan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:15:10