diff --git a/lib/library/song_media.dart b/lib/library/song_media.dart index e8d411e..b92d319 100644 --- a/lib/library/song_media.dart +++ b/lib/library/song_media.dart @@ -10,6 +10,7 @@ MediaItem songToMediaItem(Song s) => MediaItem( album: s.album, duration: s.durationMs != null ? Duration(milliseconds: s.durationMs!) : null, artUri: s.coverPath != null ? Uri.file(s.coverPath!) : null, + extras: {'songId': s.id}, ); /// Spielt [songs] ab [startIndex] ab. diff --git a/lib/player/now_playing_screen.dart b/lib/player/now_playing_screen.dart index 20c404d..55764ec 100644 --- a/lib/player/now_playing_screen.dart +++ b/lib/player/now_playing_screen.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../shared/cover.dart'; +import '../shared/favorite_button.dart'; import '../shared/theme.dart'; import 'audio_handler.dart'; @@ -16,12 +17,15 @@ class NowPlayingScreen extends StatelessWidget { return Scaffold( appBar: AppBar( backgroundColor: Colors.transparent, - leading: IconButton( - tooltip: 'Schließen', - icon: const Icon(Icons.keyboard_arrow_down), - onPressed: () => Navigator.of(context).maybePop(), - ), actions: [ + StreamBuilder( + stream: handler.mediaItem, + builder: (context, snapshot) { + final songId = snapshot.data?.extras?['songId'] as String?; + if (songId == null) return const SizedBox.shrink(); + return FavoriteButton(songId: songId); + }, + ), _SleepTimerButton(handler: handler), ], ), diff --git a/test/library/song_media_test.dart b/test/library/song_media_test.dart new file mode 100644 index 0000000..8908b94 --- /dev/null +++ b/test/library/song_media_test.dart @@ -0,0 +1,24 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:melo/library/database.dart'; +import 'package:melo/library/song_media.dart'; + +void main() { + test('songToMediaItem trägt die Song-UUID in extras', () { + final song = Song( + id: 'song-1', + path: '/a.mp3', + title: 'A', + artist: null, + album: null, + durationMs: null, + coverPath: null, + dateAddedMs: 0, + updatedAtMs: 0, + deleted: false, + ); + + final item = songToMediaItem(song); + + expect(item.extras?['songId'], song.id); + }); +}