flutter - 当前播放歌曲完成后,使用 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((正在播放){})'的方法,
但我不知道在哪里以及如何使用它。
我真的很感激我能得到的任何帮助!!
解决方案
推荐阅读
- tfs - 系统更新后 TFS 2017 自行卸载
- java - 可能无法在 stepdefs 类中将“驱动程序”作为参数传递
- ruby-on-rails - 如何在所有接口上配置 Rails 5.2.1 服务器监听?
- sql - 无法比较 where 子句中的转换变量
- java - 如何构建 Quartz 调度器?
- elasticsearch - elasticsearch - “错误”:“IndexMissingException[[_cluster] 缺失]”,
- hadoop - Hadoop 路径不是文件
- ionic-framework - Ionic 4 - 从模态传回数据
- docker - 访问 docker 容器的端口
- sql - 查找 Rolling Sum SQL