我正在使用 Ryan Heise 的 just_audio 插件进行颤振。我能够获得缓冲、准备、加载、完成等事件。
有没有办法让歌曲在播放列表中完成的事件?我似乎无法在文档中找到一个。我们需要更新 UI 以显示下一首歌曲正在播放。
感谢您对此的帮助。
我正在使用 Ryan Heise 的 just_audio 插件进行颤振。我能够获得缓冲、准备、加载、完成等事件。
有没有办法让歌曲在播放列表中完成的事件?我似乎无法在文档中找到一个。我们需要更新 UI 以显示下一首歌曲正在播放。
感谢您对此的帮助。
您应该能够使用 a StreamBuilder
which listens to just_audio
's currentIndexStream
。这样,总会有最新的信息:如果状态更新,您的构建触发并且显示数据的小部件被重建。
在 pub 上的设置中,列出了可供您收听的不同可用流,其中currentIndexStream
是您需要的信息)
StreamBuilder(
stream: player.currentIndexStream,
builder: (context, AsyncSnapshot snapshot) {
int currentIndex = snapshot.data ?? 0;
print(currentIndex.toString());
return MySongInfoWidget(song: mySongList[currentIndex]);
}
);
上面的代码至少应该让您了解如何解决这个问题,请查看StreamBuilder 文档以获取更多信息。
一个更完整的例子(展示如何在构建中使用流构建器):
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(...),
body: Column(children: [
myStaticWidget(...),
StreamBuilder(
stream: player.currentIndexStream,
builder: (context, AsyncSnapshot snapshot) {
int currentIndex = snapshot.data ?? 0;
return Column(children: [
Text('Current song #$currentIndex'),
Text('Song name: ${mySongs[currentIndex].name}');
]);
}
),
]),
);
}