0

我正在使用 Ryan Heise 的 just_audio 插件进行颤振。我能够获得缓冲、准备、加载、完成等事件。

有没有办法让歌曲在播放列表中完成的事件?我似乎无法在文档中找到一个。我们需要更新 UI 以显示下一首歌曲正在播放。

感谢您对此的帮助。

4

1 回答 1

1

您应该能够使用 a StreamBuilderwhich 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}');
          ]);
        }
      ),
    ]),
  );
}
于 2021-11-15T08:43:04.097 回答