如何为just_audio的ConcatenatingAudioSource指定下一首播放的轨道索引
just_audio官方没有提供名为player.setNextTrackIndex(someIndex)的API,但可以通过以下两种方案实现你的需求,分别对应两种不同的使用场景:
场景1:立刻切换到指定索引的音轨
直接调用player自带的seek方法即可,不需要多次调用seekToNext,示例代码如下:
// 预先保存ConcatenatingAudioSource实例 final playlist = ConcatenatingAudioSource(children: [ // 你的音轨列表 ]); await player.setAudioSource(playlist); // 直接跳转到索引为targetIndex的音轨开头,索引从0开始计数 // 如果当前处于播放状态,跳转后会自动开始播放目标音轨 await player.seek(Duration.zero, index: targetIndex);
场景2:修改当前音轨播放结束后自动跳转的下一首
如果你不需要立刻切歌,只是希望当前音轨播完后自动跳到你指定的索引,可通过动态调整播放列表顺序实现:
// 假设当前正在播放的音轨索引为currentIndex // 你希望下一首播放的音轨索引为customNextIndex // 将目标音轨移动到当前播放索引的下一位即可 await playlist.move(oldIndex: customNextIndex, newIndex: currentIndex + 1);
注意事项
- 所有涉及音源操作、seek操作的方法都是异步的,建议添加
await等待操作完成,避免出现状态异常 - 如果开启了随机播放模式,默认的播放顺序会被
ShuffleOrder接管,此时如果要自定义下一首,可先关闭随机播放,或者自定义ShuffleOrder实现自定义播放顺序
内容的提问来源于stack exchange,提问作者Haidar
相关产品推荐
相关产品推荐

