3 Tap-Stellen öffnen den Vollbild-Player jetzt über PlayerExpansionController statt Navigator.push

Zusätzlich test/player/now_playing_heart_test.dart angepasst (Plan-Lücke:
nutzt denselben SongZeile-Tap-Pfad, war nicht in Task 3s Datei-Liste
erwähnt) — Provider ergänzt, Route für die Layout-Prüfung selbst separat
geöffnet, bis Task 5 NowPlayingScreen zu Overlay-Inhalt umbaut.
This commit is contained in:
Hermes (Server)
2026-08-29 14:34:30 +02:00
parent 7a9493955a
commit aea80d9755
7 changed files with 60 additions and 29 deletions
+7 -3
View File
@@ -11,7 +11,7 @@ import 'package:melo/library/database.dart';
import 'package:melo/library/playlist_service.dart';
import 'package:melo/library/song_list.dart';
import 'package:melo/player/audio_handler.dart';
import 'package:melo/player/now_playing_screen.dart';
import 'package:melo/player/player_expansion_controller.dart';
import 'package:melo/settings/app_settings.dart';
/// Ersetzt in [MeloAudioHandler.loadPlaylist] den echten just_audio-Zugriff:
@@ -91,6 +91,8 @@ void main() {
testWidgets('Song antippen öffnet den Vollbild-Player mit großem Cover',
(tester) async {
final expansion = PlayerExpansionController(vsync: tester);
addTearDown(expansion.dispose);
await tester.pumpWidget(
MultiProvider(
providers: [
@@ -99,6 +101,8 @@ void main() {
ChangeNotifierProvider<CategoryService>.value(value: kategorien),
ChangeNotifierProvider<PlaylistService>.value(value: playlists),
ChangeNotifierProvider<AppSettings>.value(value: einstellungen),
ChangeNotifierProvider<PlayerExpansionController>.value(
value: expansion),
],
child: MaterialApp(
home: Scaffold(
@@ -112,12 +116,12 @@ void main() {
),
);
expect(find.byType(NowPlayingScreen), findsNothing);
expect(expansion.progress, 0.0);
await tester.tap(find.text('Roses'));
await tester.pumpAndSettle();
expect(find.byType(NowPlayingScreen), findsOneWidget);
expect(expansion.progress, 1.0);
// Ohne diesen Abschluss bleibt ein drift-Stream-Abo (Favoriten-Herz)
// beim Abbau des Baums als offener Fake-Timer stehen — dieselbe