NowPlayingScreen: von Scaffold/Route zu Overlay-Inhalt in HomeShell umgebaut
This commit is contained in:
@@ -89,34 +89,30 @@ void main() {
|
||||
metadataEdited: false,
|
||||
);
|
||||
|
||||
// Öffnet den Vollbild-Player über denselben Weg wie in
|
||||
// Startet die Wiedergabe über denselben Weg wie in
|
||||
// song_list_navigation_test.dart (Tap auf eine SongZeile) — dieser Weg ist
|
||||
// dort nachweislich unproblematisch, im Unterschied zu einem direkten
|
||||
// Aufbau von NowPlayingScreen mit vorab befülltem MediaItem-Stream.
|
||||
//
|
||||
// Seit dem Umbau auf PlayerExpansionController (Plan
|
||||
// 2026-08-29-blur-oeffnen-transition, Task 3) zeigt der Tap allein noch
|
||||
// keine sichtbare Oberfläche — das Overlay-Rendering kommt erst mit
|
||||
// Task 4/5 ("Bekannte Zwischenlücke", siehe Plan). Für die Prüfung von
|
||||
// NowPlayingScreens eigenem Layout (Herz-Position) wird die Route hier
|
||||
// deshalb zusätzlich, unabhängig vom Produktions-Pfad, direkt geöffnet.
|
||||
// Sobald Task 5 NowPlayingScreen zu Overlay-Inhalt umbaut, muss dieser
|
||||
// Test ohnehin überarbeitet werden (Task 5 durchsucht dafür selbst
|
||||
// `test -iname "*now_playing*"`, was diese Datei einschließt).
|
||||
// dort nachweislich unproblematisch und übt die echte SongZeile→MediaItem
|
||||
// -Umwandlung. Seit dem Umbau auf PlayerExpansionController (Plan
|
||||
// 2026-08-29-blur-oeffnen-transition, Task 3/5) ist NowPlayingScreen kein
|
||||
// per Navigator.push geöffneter Screen mehr, sondern reiner Inhalt — hier
|
||||
// deshalb direkt in einen eigenen Scaffold gepumpt (Task 5 Step 3), statt
|
||||
// eine Route zu pushen. Der Handler behält den zuvor gestarteten Titel in
|
||||
// seinem mediaItem-Stream, den NowPlayingScreen darüber sofort sieht.
|
||||
Future<void> oeffnePlayer(WidgetTester tester) async {
|
||||
final expansion = PlayerExpansionController(vsync: tester);
|
||||
addTearDown(expansion.dispose);
|
||||
final providers = [
|
||||
Provider<MeloDb>.value(value: db),
|
||||
Provider<MeloAudioHandler>.value(value: handler),
|
||||
ChangeNotifierProvider<CategoryService>.value(value: kategorien),
|
||||
ChangeNotifierProvider<PlaylistService>.value(value: playlists),
|
||||
ChangeNotifierProvider<AppSettings>.value(value: einstellungen),
|
||||
ChangeNotifierProvider<PlayerExpansionController>.value(
|
||||
value: expansion),
|
||||
];
|
||||
await tester.pumpWidget(
|
||||
MultiProvider(
|
||||
providers: [
|
||||
Provider<MeloDb>.value(value: db),
|
||||
Provider<MeloAudioHandler>.value(value: handler),
|
||||
ChangeNotifierProvider<CategoryService>.value(value: kategorien),
|
||||
ChangeNotifierProvider<PlaylistService>.value(value: playlists),
|
||||
ChangeNotifierProvider<AppSettings>.value(value: einstellungen),
|
||||
ChangeNotifierProvider<PlayerExpansionController>.value(
|
||||
value: expansion),
|
||||
],
|
||||
providers: providers,
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: SongZeile(
|
||||
@@ -133,8 +129,13 @@ void main() {
|
||||
await tester.pumpAndSettle();
|
||||
expect(expansion.progress, 1.0);
|
||||
|
||||
Navigator.of(tester.element(find.byType(SongZeile))).push(
|
||||
MaterialPageRoute(builder: (_) => const NowPlayingScreen()),
|
||||
await tester.pumpWidget(
|
||||
MultiProvider(
|
||||
providers: providers,
|
||||
child: MaterialApp(
|
||||
home: Scaffold(body: const NowPlayingScreen()),
|
||||
),
|
||||
),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
}
|
||||
@@ -154,12 +155,11 @@ void main() {
|
||||
|
||||
expect(find.byType(NowPlayingScreen), findsOneWidget);
|
||||
|
||||
// Nicht mehr in der AppBar:
|
||||
final herzInAppBar = find.descendant(
|
||||
of: find.byType(AppBar),
|
||||
matching: find.byType(FavoriteButton),
|
||||
);
|
||||
expect(herzInAppBar, findsNothing);
|
||||
// NowPlayingScreen ist seit dem Overlay-Umbau (Task 5) kein Scaffold/
|
||||
// keine Route mehr und hat gar keine AppBar mehr — die frühere
|
||||
// "nicht mehr in der AppBar"-Prüfung ist jetzt trivial durch den Umbau
|
||||
// selbst erfüllt.
|
||||
expect(find.byType(AppBar), findsNothing);
|
||||
|
||||
// Aber sichtbar auf dem Bildschirm, in derselben Row wie der Titel.
|
||||
final titelRow = find
|
||||
|
||||
Reference in New Issue
Block a user