我想修改just_audio
,以便当LoopMode
设置为LoopMode.one
时,seekToNext
仍然转到播放列表中的下一个曲目,而不是重复相同的曲目。如果曲目在用户未按下skip_next
按钮的情况下到达结尾,我仍然希望曲目重复。我相信这将是大多数用户的预期行为,因为这就是Spotify和大多数其他音乐服务的运作方式。
当用户按下skip_next
按钮时,我尝试了一个快速破解,修改代码以暂时禁用LoopMode.one
,但它似乎只是禁用了按钮。我可能遗漏了一些显而易见的东西,但如果能就正确的方法提出任何建议,我们将不胜感激。
StreamBuilder<SequenceState?>(
stream: player.sequenceStateStream,
builder: (context, snapshot) => IconButton(
icon: Icon(Icons.skip_previous),
iconSize: 50.0,
onPressed:
// default code
// player.hasNext ? player.seekToNext : null,
// modified code below not working
() {
if (player.loopMode == LoopMode.off ||
player.loopMode == LoopMode.all) {
player.hasNext ? player.seekToNext : null;
} else if (player.loopMode == LoopMode.one) {
player.setLoopMode(LoopMode.off);
player.hasNext ? player.seekToNext : null;
player.setLoopMode(LoopMode.one);
}
}),
),
您可以搜索到当前索引+1:
final nextIndex = player.currentIndex + 1;
if (nextIndex < player.sequence.length) {
player.seek(Duration.zero, nextIndex);
}
注意:如果使用混洗模式,则使用player.effectiveIndices
查找实际下一个索引。例如,如果它包含[3, 2, 1, 0]
,而currentIndex
为3,则此列表告诉nextIndex
应为2。