【发布时间】:2021-09-04 03:24:35
【问题描述】:
我正在使用 Flutter 和 audio_service+just_audio 组合为 Koel 构建一个移动应用程序。该应用程序基本上是这样工作的:
- 用户登录
- 应用从服务器加载大量 JSON 数据
- 应用将所述数据解析为歌曲、艺术家、专辑和播放列表
- 应用程序允许用户将歌曲添加到(顶部/底部/当前之后)/从队列中删除歌曲并播放或随机播放它们。整个应用程序中只有一个队列(即,如果用户在播放列表屏幕中按“全部播放”,队列的当前内容将被该播放列表中的歌曲替换)。
- 我在这里假设队列 (
List<Song>?) 和ConcatenatingAudioSource应该始终存在(尽管可以为空),以便执行第 4 步
我一直在尝试使用audio_service 和just_audio (ConcatenatingAudioSource) 执行第4 步,但到目前为止还没有那么成功。本质上,我不清楚如何设计应用程序的架构。我是否需要检测Song 的队列并将其与audio_service 和just_audio 同步,如果是,如何?当用户从 UI 中删除歌曲小部件时,如何从队列中删除相应的 Song 和从 ConcatenatingAudioSource 中删除 MediaItem?用户在播放列表屏幕中的歌曲小部件上点击“立即播放”的内容是什么,在让播放器切换到该歌曲同时仍保持队列处于活动状态的情况下应该发生什么?
(可能值得一提的是,audio_service 给出的示例非常基本,在固定队列中包含固定的歌曲列表,这与我的情况几乎不相似。此外,某些功能(例如,将歌曲排队到之后当前的)似乎不可用,这意味着我必须依赖 BackgroundAudioTask.onCustomAction,它只接受 certain data types 作为参数。MediaItem 和我的自定义 Song 模型对象似乎没有支持。)
【问题讨论】:
标签: flutter just-audio audio-service