|
|
|
@ -41,30 +41,10 @@ class QQMusicPlaylistController extends GetxController { |
|
|
|
final arguments = Get.arguments; |
|
|
|
if (arguments != null && arguments['playlist'] != null) { |
|
|
|
final List<SongModel> songList = arguments['playlist']; |
|
|
|
// try { |
|
|
|
// // 解析播放列表数据 |
|
|
|
// final songList = playlistData |
|
|
|
// .map((item) { |
|
|
|
// try { |
|
|
|
// return SongModel.fromJson(item); |
|
|
|
// } catch (e) { |
|
|
|
// Logger.e('QQMusicPlaylist', '解析歌曲数据失败: $e, 数据: $item'); |
|
|
|
// return null; |
|
|
|
// } |
|
|
|
// }) |
|
|
|
// .where((song) => song != null) |
|
|
|
// .cast<SongModel>() |
|
|
|
// .toList(); |
|
|
|
|
|
|
|
// Logger.d('QQMusicPlaylist', '成功解析歌曲数量: ${songList.length}'); |
|
|
|
// 更新播放列表 |
|
|
|
playlist.assignAll(songList); |
|
|
|
// 检查当前播放歌曲是否在列表中 |
|
|
|
_syncDisplayStateWithActualPlayback(); |
|
|
|
// } catch (e) { |
|
|
|
// Logger.e('QQMusicPlaylist', '处理播放列表时发生异常: $e'); |
|
|
|
// _setDefaultDisplayState(); |
|
|
|
// } |
|
|
|
} else { |
|
|
|
Logger.w('QQMusicPlaylist', '未接收到播放列表参数'); |
|
|
|
_setDefaultDisplayState(); |
|
|
|
@ -150,31 +130,9 @@ class QQMusicPlaylistController extends GetxController { |
|
|
|
final songMids = finalSongList.map((s) => s.mid).toList(); |
|
|
|
final playIndex = finalSongList.indexOf(song); |
|
|
|
|
|
|
|
// 如果歌曲不在当前列表中,则只播放这一首 |
|
|
|
if (playIndex == -1) { |
|
|
|
final singleSongList = [song]; |
|
|
|
final result = await _qqMusicService.playSongs( |
|
|
|
songMids: [song.mid], |
|
|
|
index: 0, |
|
|
|
songList: singleSongList, |
|
|
|
currentSongModel: song, |
|
|
|
); |
|
|
|
|
|
|
|
if (result['success'] == true) { |
|
|
|
// 播放成功后,如果歌曲不在当前列表中,保持列表显示状态不变 |
|
|
|
Get.snackbar('开始播放', song.name); |
|
|
|
// _qqMusicService.syncCurrentPlayInfo(); |
|
|
|
} else { |
|
|
|
Get.snackbar('播放失败', result['error'] ?? '未知错误'); |
|
|
|
displayIsPlaying.value = false; |
|
|
|
} |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 歌曲在当前列表中,更新界面状态 |
|
|
|
currentIndex.value = playIndex; |
|
|
|
displayCurrentSong.value = song; |
|
|
|
|
|
|
|
final result = await _qqMusicService.playSongs( |
|
|
|
songMids: songMids, |
|
|
|
index: playIndex, |
|
|
|
@ -185,14 +143,14 @@ class QQMusicPlaylistController extends GetxController { |
|
|
|
if (result['success'] == true) { |
|
|
|
displayIsPlaying.value = true; |
|
|
|
// _qqMusicService.syncCurrentPlayInfo(); |
|
|
|
Get.snackbar('开始播放', song.name); |
|
|
|
// Get.snackbar('开始播放', song.name); |
|
|
|
} else { |
|
|
|
displayIsPlaying.value = false; |
|
|
|
Get.snackbar('播放失败', result['error'] ?? '未知错误'); |
|
|
|
// Get.snackbar('播放失败', result['error'] ?? '未知错误'); |
|
|
|
} |
|
|
|
} catch (e) { |
|
|
|
displayIsPlaying.value = false; |
|
|
|
Get.snackbar('播放失败', e.toString()); |
|
|
|
// Get.snackbar('播放失败', e.toString()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|