fix(music): keep now playing state current

close #1600
This commit is contained in:
edde746
2026-07-17 16:30:10 +02:00
parent 5b90c4bca0
commit 70cd7e8c67
18 changed files with 741 additions and 67 deletions
+5 -1
View File
@@ -123,6 +123,8 @@ Future<void> playTracks(
/// album, isn't found in it, or the album fetch fails.
Future<void> playTrackWithAlbumContext(BuildContext context, MediaItem track) async {
if (!ensureMusicPlaybackAvailable(context)) return;
final service = context.read<MusicPlaybackService>();
final intent = service.beginPlayIntent();
final albumId = track.parentId;
final client = context.getMediaClientForItemOrNull(track);
@@ -130,7 +132,7 @@ Future<void> playTrackWithAlbumContext(BuildContext context, MediaItem track) as
try {
final tracks = await client.fetchAlbumTracks(albumId);
final startIndex = tracks.indexWhere((item) => item.id == track.id);
if (!context.mounted) return;
if (!context.mounted || !service.isPlayIntentCurrent(intent)) return;
if (startIndex != -1) {
await playTracks(
context,
@@ -141,11 +143,13 @@ Future<void> playTrackWithAlbumContext(BuildContext context, MediaItem track) as
return;
}
} catch (e) {
if (!service.isPlayIntentCurrent(intent)) return;
appLogger.w('Failed to fetch album context for track ${track.id}; playing single track', error: e);
if (!context.mounted) return;
}
}
if (!context.mounted || !service.isPlayIntentCurrent(intent)) return;
await playTracks(
context,
tracks: [track],