feat(player): Warteschlangen-Ansicht mit Springen, Entfernen, Umsortieren

- Neuer QueueScreen: zeigt handler.queue, hebt aktuell spielenden Titel
  hervor (fett/rot), Antippen springt per skipToQueueItem
- Entfernen und Umsortieren ohne Änderung an MeloAudioHandler: Queue wird
  clientseitig neu berechnet und per loadPlaylist neu geladen; Position
  wird nur wiederhergestellt, wenn der abgespielte Titel unverändert blieb
- Reine Queue-Logik (removeFromQueue/reorderQueue/newPlayingIndex) als
  eigenständige, ohne AudioHandler testbare Funktionen extrahiert
- Warteschlangen-Button in der Now-Playing-AppBar verlinkt den neuen Screen

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Hermes (Server)
2026-08-18 17:55:01 +02:00
co-authored by Claude Haiku 4.5
parent ea6d8ab18e
commit d267bb9658
3 changed files with 231 additions and 0 deletions
+9
View File
@@ -6,6 +6,7 @@ import '../shared/cover.dart';
import '../shared/favorite_button.dart';
import '../shared/theme.dart';
import 'audio_handler.dart';
import 'queue_screen.dart';
/// Vollbild-Wiedergabe: Cover, Titel, Fortschritt, Transport-Controls.
class NowPlayingScreen extends StatelessWidget {
@@ -27,6 +28,14 @@ class NowPlayingScreen extends StatelessWidget {
},
),
_SleepTimerButton(handler: handler),
IconButton(
tooltip: 'Warteschlange',
icon: const Icon(Icons.queue_music),
onPressed: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const QueueScreen()),
),
),
],
),
body: SafeArea(