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

Flutter just_audio插件启用随机播放后无法切换歌曲的问题求助

解决just_audio启用shuffle后无法切换歌曲的问题

我之前在使用just_audio开发音频播放功能时,也碰到过开启shuffle模式后next/previous/skip操作失效的情况,结合官方文档和踩坑经验,整理了几个排查方向和解决方法:

  • 检查shuffle模式的启用逻辑
    一定要使用插件提供的setShuffleModeEnabled方法来开启/关闭随机播放,不要手动打乱播放列表的顺序——just_audio内部维护了一套shuffle索引映射,手动修改列表会导致切换逻辑混乱。正确的调用方式示例:

    ElevatedButton(
      onPressed: () async {
        // 切换shuffle状态
        await player.setShuffleModeEnabled(!player.shuffleModeEnabled);
      },
      child: Text(player.shuffleModeEnabled ? '关闭随机' : '开启随机'),
    )
    
  • 确保播放列表先加载再开启shuffle
    如果是在shuffle模式开启后才加载音频源,插件可能无法正确生成shuffle序列。建议先初始化播放列表,再启用随机播放:

    // 先加载完整的播放列表
    final audioSource = ConcatenatingAudioSource(
      children: [
        AudioSource.uri(Uri.parse('asset:///audio_track_1.mp3')),
        AudioSource.uri(Uri.parse('asset:///audio_track_2.mp3')),
        // 更多音频源...
      ],
    );
    await player.setAudioSource(audioSource);
    
    // 再启用shuffle模式
    await player.setShuffleModeEnabled(true);
    
  • 确认切换方法的调用正确性
    在shuffle模式下,必须使用插件提供的player.next()、player.previous()来切换歌曲,不要手动修改player.currentIndex——因为shuffle模式下的当前索引是内部映射后的结果,手动修改会破坏随机序列的逻辑。

  • 排查版本兼容性问题
    旧版本的just_audio存在shuffle模式的已知bug,建议升级到最新的稳定版本。你可以在pubspec.yaml中更新依赖:

    dependencies:
      just_audio: ^0.9.36 # 替换为当前最新稳定版本号
    
  • 手动重置shuffle序列
    如果以上方法都无效,可以尝试手动触发shuffle序列的重新生成,在启用shuffle后调用:

    await player.shuffle(); // 强制重新生成随机播放序列
    

内容的提问来源于stack exchange,提问作者Vĩnh Trường Đặng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 02:07:45