如何修改 just_audio 中的队列?

How can I modify the queue in just_audio?

我正在尝试使用 just_audio 和 audio_service 制作音乐应用程序,但我一直在实现 onAddQueueItem 功能。我找不到 append/modify just_audio 队列的方法,只能通过 player.setAudioSource.

使用新播放列表重新加载 just_audio

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

Queues/playlists 是在 just_audio 中通过创建一个 ConcatenatingAudioSource 实现的,它给出了一个接一个播放的音频源列表。 class 的 documentation 列出了以下方法,几乎​​所有方法都处理 appending/modifying 队列:

  • 添加
  • 全部添加
  • 清除
  • 插入
  • 全部插入
  • 移动
  • 删除时间
  • 删除范围
  • 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);
}