通知中心全部控制逻辑已达成,即将进入后台与播放歌曲标题推送的优化

This commit is contained in:
2026-08-21 23:17:10 +08:00
parent 89c4ba8191
commit 2cbd0350a5
5 changed files with 42 additions and 7 deletions
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M6,18l8.5-6L6,6v12zM16,6v12h2V6h-2z"/>
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M6,19h4V5H6v14zm8-14v14h4V5h-4z"/>
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M8,5v14l11,-7z"/>
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M6,6h2v12H6zm3.5,6l8.5-6v12z"/>
</vector>
+6 -7
View File
@@ -17,23 +17,23 @@ class PlaybackStateManager {
Duration get duration => _duration; Duration get duration => _duration;
// ⭐ 核心改动:使用 playPause 替代 play/pause 分离 // ⭐ 核心改动:使用 playPause 替代 play/pause 分离
// lib/audio/playback_state_manager.dart
audio_service.PlaybackState get playbackState { audio_service.PlaybackState get playbackState {
// ⭐ 固定使用 playPause,不再动态切换
final playControl = audio_service.MediaControl( final playControl = audio_service.MediaControl(
androidIcon: _playing ? 'drawable/ic_pause' : 'drawable/ic_play', androidIcon: _playing ? 'drawable/ic_pause' : 'drawable/ic_play',
label: _playing ? '暂停' : '播放', label: _playing ? '暂停' : '播放',
action: audio_service.MediaAction.playPause, // 固定 action: audio_service.MediaAction.playPause,
); );
final controls = [ final controls = [
audio_service.MediaControl( audio_service.MediaControl(
androidIcon: 'drawable/ic_previous', androidIcon: 'drawable/ic_previous', // 上一首
label: '上一曲', label: '上一曲',
action: audio_service.MediaAction.skipToPrevious, action: audio_service.MediaAction.skipToPrevious,
), ),
playControl, playControl,
audio_service.MediaControl( audio_service.MediaControl(
androidIcon: 'drawable/ic_next', androidIcon: 'drawable/ic_next', // 下一首
label: '下一曲', label: '下一曲',
action: audio_service.MediaAction.skipToNext, action: audio_service.MediaAction.skipToNext,
), ),
@@ -42,10 +42,9 @@ class PlaybackStateManager {
return audio_service.PlaybackState( return audio_service.PlaybackState(
controls: controls, controls: controls,
processingState: audio_service.AudioProcessingState.ready, processingState: audio_service.AudioProcessingState.ready,
playing: _playing, // ⭐ 这里才是真正的播放状态,通知栏会根据它显示正确的图标 playing: _playing,
androidCompactActionIndices: const [0, 1, 2], androidCompactActionIndices: const [0, 1, 2], // 显示全部三个
updateTime: DateTime.now(), updateTime: DateTime.now(),
//extras: {'_refresh': DateTime.now().millisecondsSinceEpoch},
); );
} }