Кто-нибудь успешно пытался динамически извлекать несколько аудиоданных в список asset_audio_player из firestore?

Я пытался использовать assets_audio_player для плейлиста. Я хочу динамически получать данные из коллекции firestore, но не могу поместить все песни в список воспроизведения.

Я безуспешно пытался динамически заполнить список аудио данными из firestore.

У меня есть 3 песни в коллекции db, но я смог добавить только 1 из них в список аудио.

Я не хочу добавлять URL-адреса песен статически, как показано в примере с плагином. Кто-нибудь может помочь?

я расстраиваюсь после стольких попыток и неудач. Я перепробовал все, что мог придумать.

Сначала я получил данные с помощью StreamBuilder и передал их в AudioPlayerBackgroundPlaylist();

      children:
                        snapShot.data.docs.map((DocumentSnapshot document) {
                      return InkWell(
                          onTap: () {
                            MaterialPageRoute(builder: (
                              context) => AudioPlayerBackgroundPlaylist (
                                song: document.data()['song'],
                                songTitle: document.data()['songTitle'],
                                artistName: document.data()['artist']['artistName'],
                              )));

Вот страница AudioPlayerBackgroundPlaylist, где я ожидал увидеть песни, но я вижу только одну из трех песен в коллекции db

      class AudioPlayerBackgroundPlaylist extends StatefulWidget {
  String songTitle, artistName, song;

  AudioPlayerBackgroundPlaylist(
      {this.songTitle,
      this.artistName,
      this.song,      
      });
  @override
  _AudioPlayerBackgroundPlaylistState createState() =>
      _AudioPlayerBackgroundPlaylistState();
}

class _AudioPlayerBackgroundPlaylistState
    extends State<AudioPlayerBackgroundPlaylist> {
  final AssetsAudioPlayer audioPlayer = AssetsAudioPlayer();

  List<Audio> audios;

  @override
  void initState() {
    audios = [
          Audio.network(
              widget.song,
              metas: Metas(title: widget.songTitle, artist: widget.artistName)),
        ]
    super.initState();
    setupPlaylist();
  }

  @override
  void dispose() {
    super.dispose();
    audioPlayer.dispose();
  }

  void setupPlaylist() async {
    audioPlayer.open(
        Playlist(audios: audios),
        showNotification: true,
        autoStart: false);
  }

  playMusic() async {
    await audioPlayer.play();
  }

  pauseMusic() async {
    await audioPlayer.pause();
  }

  skipPrevious() async {
    await audioPlayer.previous();
  }

  skipNext() async {
    await audioPlayer.next();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        alignment: Alignment.center,
        child: audioPlayer.builderIsPlaying(builder: (context, isPlaying) {
          return Row(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              IconButton(
                  iconSize: 50,
                  icon: Icon(Icons.skip_previous_rounded),
                  onPressed: () => skipPrevious()),
              IconButton(
                  iconSize: 50,
                  icon: Icon(isPlaying
                      ? Icons.pause_rounded
                      : Icons.play_arrow_rounded),
                  onPressed: () => isPlaying ? pauseMusic() : playMusic()),
              IconButton(
                  iconSize: 50,
                  icon: Icon(Icons.skip_next_rounded),
                  onPressed: () => skipNext())
            ],
          );
        }),
      ),
    );
  }
}

0 ответов

Другие вопросы по тегам