// lib/audio/playback_state_manager.dart import 'package:audio_service/audio_service.dart' as audio_service; class PlaybackStateManager { static final PlaybackStateManager _instance = PlaybackStateManager._internal(); factory PlaybackStateManager() => _instance; PlaybackStateManager._internal(); bool _playing = false; bool get playing => _playing; Duration _position = Duration.zero; Duration get position => _position; Duration _duration = Duration.zero; Duration get duration => _duration; // ⭐ 核心改动:使用 playPause 替代 play/pause 分离 // lib/audio/playback_state_manager.dart audio_service.PlaybackState get playbackState { final playControl = audio_service.MediaControl( androidIcon: _playing ? '@drawable/ic_pause' : '@drawable/ic_play', label: _playing ? '暂停' : '播放', action: audio_service.MediaAction.playPause, ); final controls = [ audio_service.MediaControl( androidIcon: '@drawable/ic_previous', // 上一首 label: '上一曲', action: audio_service.MediaAction.skipToPrevious, ), playControl, audio_service.MediaControl( androidIcon: '@drawable/ic_next', // 下一首 label: '下一曲', action: audio_service.MediaAction.skipToNext, ), ]; return audio_service.PlaybackState( controls: controls, processingState: audio_service.AudioProcessingState.ready, playing: _playing, androidCompactActionIndices: const [0, 1, 2], // 显示全部三个 updateTime: DateTime.now(), ); } // ---- 状态更新方法保持不变 ---- void updatePlaying(bool playing) { if (_playing != playing) { _playing = playing; } } void updatePosition(Duration position) { _position = position; } void updateDuration(Duration duration) { _duration = duration; } void reset() { _playing = false; _position = Duration.zero; _duration = Duration.zero; } }