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