flutter - 如何将 Flutter Audio Query 中的 SongInfo 列表添加到 Flutter 中的音频服务 MediaItem?
问题描述
我试图在互联网上寻找解决方案,但没有找到。我也尝试了一些方法,但仍然没有奏效。我只为音频播放器使用了音频和颤动音频查询插件,我尝试使用音频服务插件使其在后台和通知控件中运行。我不知道如何实现List<SongInfo
> to 。<MediaItem>
音频查询示例代码
List<SongInfo> songs = [];
void getTracks() async {
songs = await audioQuery.getSongs();
setState(() {
songs = songs;
});
}
音频服务示例:
class AudioPlayer extends BackgroundAudioTask{
final FlutterAudioQuery audioQuery = FlutterAudioQuery();
//background audio player class
final _queue = <MediaItem>[];
}
解决方案
List.map
非常适合将一种类型的列表转换为另一种类型的列表。
_queue.addAll(songs.map((song) => MediaItem(
id: song.id,
album: song.album,
title: song.title,
)));
这通过获取歌曲的每个属性值并在构造媒体项时将其用作适当的参数值,将每首歌曲映射到一个媒体项。map
将为列表中的每首歌曲执行此操作,并生成一个可迭代的媒体项目,您可以将其添加到您_queue
的列表中,如上所示,或者转换为带有.toList()
.
推荐阅读
- ansible - 无法通过 ansible playbook SSH 到远程主机
- java - org.postgresql.util.PSQLException: ERREUR: erreur de syntaxe sur ou près de « $2 » 位置:40
- r - Swap key and label in ggplot legend
- variations - 如何根据类似于 BAYC 或其他 NFT 收藏品的各种艺术资产以编程方式生成艺术变体?
- python - 我希望能够搜索我输入的名称并获得分数
- php - PHPUnit 测试实际上运行代码而不是仅仅测试
- python - Python如何捕获由数字后跟多个测量单位中的任何一个组成的模式
- visual-studio - 在 dev 中设置具有项目依赖项的 .net5 库项目的正确方法,但在发布时将 nuget 包分开
- php - 导入大数据时哪种方法更实用或更正统?
- sql - Iteratively get the max of a data frame column, add one and repeat for all rows in r