Flutter just_audio-请参阅启用LoopMode.one的下一步



我想修改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。

相关内容

  • 没有找到相关文章