首页 > 解决方案 > 当前播放歌曲完成后,使用 assets_audio_player 播放播放列表中的下一首歌曲的方法是什么?我应该在哪里实施?

问题描述

        final assetsAudioPlayer = AssetsAudioPlayer.withId('0');
    
    
        getSongs() async {
    
        try {
          Directory dir = Directory('/storage/emulated/0/Music');
          String mp3Path = dir.toString();
          _files = dir.listSync(recursive: true, followLinks: false);
          for (FileSystemEntity entity in _files) {
            String path = entity.path;
            if (path.endsWith('.mp3')) {
              _songs.add(entity);
              String start = '/Music/';
              String end = '.mp3';
    
              final startIndex = path.indexOf(start);
              final endIndex = path.indexOf(end, startIndex + start.length);
    
              String songName = path.substring(startIndex + start.length, endIndex);
    
              if (songName.contains('-')) {
                List split = splitURL(songName, '-', max: 1);
                String artist = split[0].toString().trim();
                String title = split[1].toString().trim();
                map = {'title': title, 'artist': artist, 'url': path};
              } else {
                String title = songName.trim();
                String artist = 'Unknown';
                map = {'title': title, 'artist': artist, 'url': path};
              }
    
              tags.add(map);
              tagsShuffle.add(map);
              songTitle.add(songName);
            }
          }

    
          tags.sort((a, b) => a.toString().compareTo(b.toString()));
          _songs.sort((a, b) => a.toString().compareTo(b.toString()));
          songTitle.sort((a, b) => a.toString().compareTo(b.toString()));
    
          for (var i = 0; i < tags.length; i++) {
            var url = tags[i]['url'];
            var title = tags[i]['title'];
            var artist = tags[i]['artist'];
            playlistAllSongs.add(Audio.file(url, metas: Metas(
              title: title,
              artist: artist,
              image: MetasImage.asset("assets/music_icon.png"),
            )));
          }
        } catch (e) {
          print(e);
        }
      }
    
        @override
          void initState() {
            super.initState();
            this.getSongs();
        
          }

    clickPlay() {
    assetsAudioPlayer.open(
        Playlist(audios: playlistAllSongs, startIndex: 0),
        showNotification: true,
        notificationSettings: NotificationSettings(
          playPauseEnabled: true,
          nextEnabled: true,
          prevEnabled: true,
          seekBarEnabled: true,
          stopEnabled: false,
        ),
        autoStart: true,
        loopMode: LoopMode.playlist
    );
  }

我只想知道如何以及在哪里实现当前歌曲播放完时播放下一首歌曲的方法......我确实找到了一个名为'assetsAudioPlayer.playlistAudioFinished.listen((正在播放){})'的方法,

但我不知道在哪里以及如何使用它。

我真的很感激我能得到的任何帮助!!

标签: flutter

解决方案


推荐阅读