Plan/Spec: Review-Panel-Befunde eingearbeitet
Budget-Adversarial-Panel (3 Reviewer, unabhängig konvergent) fand einen P0 (AnimatedBuilder.child-Fehlgebrauch macht Blur-Layer nicht live) und mehrere P1s (State-Persistenz-Widerspruch zur Spec, fehlende Hit-Test-/Accessibility- Isolation, verworfene Loslass-Geschwindigkeit, fehlendes extendBody, Tests nur gegen Test-Doppelgänger). Alle behoben: eigene AnimatedBuilder pro reaktiver Ebene (Reaktivitäts-Regel in Global Constraints), Visibility statt Conditional-Unmount, IgnorePointer/ExcludeSemantics für Hintergrund-Layer, echte Fling-Geschwindigkeit, extendBody + BottomNavigationBar-Fade, neuer Integrationstest gegen das echte HomeShell, State-Persistenz-Test.
This commit is contained in:
@@ -198,3 +198,27 @@ beobachtbarer Unterschied gegenüber heute.
|
||||
- `PlayerExpansionController` muss den `mounted`-Zustand von `HomeShell`
|
||||
respektieren (kein `notifyListeners()`/Controller-Zugriff nach `dispose()`)
|
||||
— analog zum bestehenden Muster in `_CoverGrundState`.
|
||||
|
||||
## Nachtrag: Review-Panel (2026-08-29, vor Umsetzung)
|
||||
|
||||
Ein Budget-Adversarial-Panel (3 Reviewer + Synthese) hat den Implementierungsplan
|
||||
gegen diese Spec geprüft und dabei Lücken gefunden, die der Plan direkt behebt
|
||||
(Details im Implementierungsplan-Dokument, nicht hier wiederholt):
|
||||
|
||||
- Hit-Test- und Screenreader-Isolation zum Hintergrund waren in der ersten
|
||||
Planfassung nicht vorgesehen — jetzt Teil von Task 4 (`IgnorePointer`/
|
||||
`ExcludeSemantics` auf Tab-Inhalt und `BottomNavigationBar` bei `progress > 0`).
|
||||
- Der Wegfall der bisher über `Scaffold`/`AppBar` impliziten Status-Icon-
|
||||
Helligkeit war nicht bedacht — jetzt Teil von Task 5 (`AnnotatedRegion`).
|
||||
- Ohne `extendBody: true` hätte das "Vollbild"-Rechteck nicht zur tatsächlichen
|
||||
`Scaffold.body`-Höhe gepasst — jetzt Teil von Task 4.
|
||||
- Erwogene, aber verworfene Alternative: ein nur *während der Geste*
|
||||
eingeblendeter `OverlayEntry` (Blur + Cover-Vorschau) direkt in
|
||||
`mini_player.dart`, der bei Erreichen der Öffnen-Schwelle in einen normalen
|
||||
`Navigator.push` mit unverändertem, Hero-basiertem `NowPlayingScreen`
|
||||
übergeht — deutlich weniger Code, behält Route-Semantik (Accessibility-
|
||||
Grenze, einfacheres Zurück-Verhalten) vollständig. Nicht gewählt, weil
|
||||
Dustin sich für die Overlay-Variante (näher an Spotify/Apple Music, siehe
|
||||
oben) entschieden hat — hier dokumentiert, damit die Abwägung nachvollziehbar
|
||||
bleibt, falls der Wartungsaufwand des Overlay-Ansatzes sich später als zu
|
||||
hoch erweist.
|
||||
|
||||
Reference in New Issue
Block a user