【发布时间】:2021-11-15 08:31:42
【问题描述】:
我正在使用 Ryan Heise 的 just_audio 插件进行颤振。我能够获得缓冲、准备、加载、完成等事件。
有没有办法让歌曲在播放列表中完成的事件?我似乎无法在文档中找到一个。我们需要更新 UI 以显示下一首正在播放的歌曲。
感谢您对此的帮助。
【问题讨论】:
标签: flutter events plugins just-audio
我正在使用 Ryan Heise 的 just_audio 插件进行颤振。我能够获得缓冲、准备、加载、完成等事件。
有没有办法让歌曲在播放列表中完成的事件?我似乎无法在文档中找到一个。我们需要更新 UI 以显示下一首正在播放的歌曲。
感谢您对此的帮助。
【问题讨论】:
标签: flutter events plugins just-audio
您应该能够使用StreamBuilder 来监听just_audio 的currentIndexStream。这样,将始终有最新的信息:如果状态更新,您的构建触发并且显示数据的小部件被重建。
在 pub 的设置中,列出了可供您收听的不同可用流,其中包括 currentIndexStream,我认为它通过流当前值(与您的歌曲列表一起应该能够为您提供所需的信息)
StreamBuilder(
stream: player.currentIndexStream,
builder: (context, AsyncSnapshot snapshot) {
int currentIndex = snapshot.data ?? 0;
print(currentIndex.toString());
return MySongInfoWidget(song: mySongList[currentIndex]);
}
);
上面的代码至少应该让您了解如何解决这个问题,请查看the StreamBuilder docs 了解更多信息。
一个更完整的例子(展示如何在构建中使用流构建器):
@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}');
]);
}
),
]),
);
}
【讨论】:
snapshot.hasData 和 snapshot.connectionStatus 是什么总是好的