我一直在尝试使用来自 firestore 的一些音频数据动态填充 MediaItem。
我正在使用确切的插件示例,但这次 mediaItems 是从 firestore 动态获取的。我已经多次查看我的代码,但我无法弄清楚我做错了什么。
这是我的尝试:
首先,我使用 StreamBuilder 获取歌曲数据并将其作为 DocumentSnapshot 列表传递给 AudioServicePlayer() 页面。
List<DocumentSnapshot> _list;
_list = snapshot.data.docs;
Flexible(
child: ListView.builder(
itemCount: 1,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => JustAudioPlaylist(
songs: [_list[index]],
),
));
},
child:
Container(child: Center(child: Text('My Playlists'))),
);
}),
)
我按预期成功收到了 QueryDocumentSnapshot。但是,当我尝试使用 widget.songs 列表填充 MediaItem 时,它只返回一个没有错误的空白页面。我无法弄清楚我在这里做错了什么;
class AudioServicePlayer extends StatefulWidget {
static const String id = 'audio-service';
List<DocumentSnapshot> songs = [];
AudioServicePlayer({this.songs});
@override
_AudioServicePlayerState createState() => _AudioServicePlayerState();
}
class _AudioServicePlayerState extends State<AudioServicePlayer> {
MediaLibrary _mediaLibrary = MediaLibrary();
@override
void initState() {
_mediaLibrary._items.addAll(widget.songs
.map((song) => MediaItem(
// This can be any unique id, but we use the audio URL for convenience.
id: song['song'],
album: "Science Friday",
title: song['songTitle'],
artist: song['artist']['artistName'],
duration: Duration(milliseconds: 5739820),
artUri: Uri.parse(song['songImage']).toString(),
))
.toList());
super.initState();
}