【问题标题】:How can I modify the queue in just_audio?如何修改 just_audio 中的队列?
【发布时间】:2021-01-28 05:25:05
【问题描述】:

我正在尝试使用 just_audio 和 audio_service 制作音乐应用程序,但我一直坚持实现 onAddQueueItem 函数。我找不到在 just_audio 上附加/修改队列的方法,只有如何通过 player.setAudioSource 使用新播放列表重新加载 just_audio。

我是打算使用player.setAudioSource 来更改当前队列还是我遗漏了什么?

【问题讨论】:

    标签: flutter just-audio


    【解决方案1】:

    队列/播放列表是在 just_audio 中通过创建一个ConcatenatingAudioSource 来实现的,它给出了一个接一个地播放的音频源列表。该类的documentation 列出了以下方法,几乎​​所有这些方法都处理追加/修改队列:

    • 添加
    • 全部添加
    • 清除
    • 插入
    • 全部插入
    • 移动
    • removeAt
    • 删除范围
    • toJson(这个不相关)
    • toString(这个不相关)

    所以你在实现onAddQueueItem时想要的是第一个add:

    Future<void> onAddQueueItem(MediaItem mediaItem) async {
      // Add it to the player
      await concatenatingAudioSource.add(AudioSource.uri(Uri.parse(mediaItem.id)));
      // Broadcast the state change to clients
      queue.add(mediaItem);
      await AudioServiceBackground.setQueue(queue);
    }
    

    【讨论】:

    • 谢谢!我创建了一个变量来保存 ConcatenatingAudioSource。我应该如何告诉 just_audio 使用这个变量?
    • 这与 README 页面中 ConcatenatingAudioSource 的第一个示例相同,即您可以将其中一个内容传递给 player.load(..here is where you put it..); 的参数。
    • 通过 setAudioSource 方法提供此 ConcatenatingAudioSource 会停止音频并重置进度条。
    • 只是为了更新我之前的评论,因为load方法被重命名为setAudioSource,播放列表可以通过player.setAudioSource(.. pass in the playlist here ..)初始化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2021-12-17
    • 1970-01-01
    • 2021-08-27
    相关资源
    最近更新 更多