import 'package:get/get.dart'; import '../controllers/music_controller.dart'; import '../../../data/services/music_manager.dart'; /// 音乐服务门面 /// 作为音乐功能的统一入口,简化模块间的交互 class MusicServiceFacade { // 单例实现 static final MusicServiceFacade _instance = MusicServiceFacade._internal(); factory MusicServiceFacade() => _instance; MusicServiceFacade._internal(); // 获取音乐控制器实例 MusicController get musicController => Get.find(); // 获取音乐管理器实例 MusicManager get musicManager => Get.find(); /// 播放音乐 Future musicPlay(Map song) async { await musicController.musicPlay(song); } /// 暂停音乐 Future musicPause() async { await musicController.musicPause(); } /// 恢复播放 Future musicResume() async { await musicController.musicResume(); } /// 播放音乐(兼容旧接口) Future playMusic(Map song) async { await musicPlay(song); } /// 暂停音乐(兼容旧接口) Future pauseMusic() async { await musicPause(); } /// 恢复播放(兼容旧接口) Future resumeMusic() async { await musicResume(); } /// 播放/暂停切换 Future togglePlayPause() async { if (musicController.isPlaying.value) { await musicPause(); } else { await musicResume(); } } /// 播放上一曲 Future playPrevious() async { await musicController.playPrevious(); } /// 播放下一曲 Future playNext() async { await musicController.playNext(); } /// 播放音乐列表 Future playPlaylist(List> playlist) async { await musicController.playPlaylist(playlist); } /// 跳转到指定位置 Future seekToPosition(int positionMs) async { await musicController.seekToPosition(positionMs); } /// 获取当前播放状态 bool get isPlayingValue => musicController.isPlaying.value; /// 获取当前播放歌曲ID int get currentIdValue => musicController.currentId.value; /// 获取当前播放位置(毫秒) int get currentPositionValue => musicController.currentPosition.value; /// 获取当前歌曲总时长(毫秒) int get durationValue => musicController.duration.value; /// 获取当前播放进度(0.0-1.0) double get progressValue => musicController.progress.value; /// 获取响应式播放状态(用于Obx) get isPlaying => musicController.isPlaying; /// 获取响应式当前播放歌曲ID(用于Obx) get currentId => musicController.currentId; /// 获取响应式当前播放位置(用于Obx) get currentPosition => musicController.currentPosition; /// 获取响应式当前歌曲总时长(用于Obx) get duration => musicController.duration; /// 获取响应式当前播放进度(用于Obx) get progress => musicController.progress; /// 获取当前播放列表 List> get currentPlaylist => musicController.currentPlaylist; /// 获取当前播放索引 int get currentPlaylistIndex => musicController.currentPlaylistIndex.value; /// 设置加载状态 void setLoadingMusic(String id, bool loading) { musicController.setLoadingMusic(id, loading); } /// 更新当前播放列表上下文 void updateCurrentPlaylistContext(List> playlist, int songId) { musicController.updateCurrentPlaylistContext(playlist, songId); } }