首页 > 解决方案 > 如何将 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>[];
}

标签: flutterjust-audioflutter-audio-query

解决方案


List.map非常适合将一种类型的列表转换为另一种类型的列表。

_queue.addAll(songs.map((song) => MediaItem(
      id: song.id,
      album: song.album,
      title: song.title,
    )));

这通过获取歌曲的每个属性值并在构造媒体项时将其用作适当的参数值,将每首歌曲映射到一个媒体项。map将为列表中的每首歌曲执行此操作,并生成一个可迭代的媒体项目,您可以将其添加到您_queue的列表中,如上所示,或者转换为带有.toList().


推荐阅读