UX-Simulation: Mehrfachauswahl überall, Baka-Login, Bestätigungen, Suche

7 Agenten sind die App als normaler Nutzer durchgegangen (Erststart,
Bibliothek, Download, Suche, Favoriten, Player, Einstellungen) und haben
39 Reibungspunkte gefunden. Erster Block:

- Mehrfachauswahl lief nur im Lieder-/Favoriten-Reiter, nicht in
  Kategorie-/Künstler-/Album-Ansichten — jetzt überall, per geteilter
  auswahl_leiste.dart
- Zwei unterschiedlich ausgestattete Favoriten-Listen (Tab vs. Playlisten)
  vereinheitlicht
- Baka-Login zeigt Ladezustand + Fehler im Dialog statt bis zu 15s stumm
  zu bleiben (wie der Navidrome-Login)
- Cache leeren, Navidrome-Abmelden, Download einzeln entfernen fragen jetzt
  nach
- Download-Fehlermeldung bei toter Serververbindung nennt den echten Grund
  statt "War schon heruntergeladen"
- YouTube-Fehlermeldungen sind jetzt rot statt neutralfarben
- Suche schließt die Tastatur nach Auswahl, nennt den Suchbegriff bei
  "Nichts gefunden", einzelne Verlaufseinträge sind entfernbar
- Icon-/Text-Korrekturen (Mikrofon-Icon fälschlich bei Speicherzugriff,
  "Online"-Tab existiert nicht, ReplayGain-Jargon)

537 Tests grün (vorher 533), flutter analyze ohne Befund.
This commit is contained in:
Hermes (Server)
2026-08-25 09:42:41 +02:00
parent 60c57577a3
commit 07acf77ba4
15 changed files with 511 additions and 202 deletions
+15 -8
View File
@@ -3,7 +3,8 @@ import 'package:provider/provider.dart';
import '../library/database.dart';
import '../library/playlist_service.dart';
import '../library/song_list.dart';
import '../shared/sort_store.dart';
import '../shared/sortable_song_list.dart';
import '../shared/theme.dart';
import 'create_playlist_dialog.dart';
import 'playlist_detail_screen.dart';
@@ -146,6 +147,10 @@ class _Empty extends StatelessWidget {
}
/// Gepushte Ansicht der favorisierten Songs.
///
/// Dieselbe [SortableSongList] wie im Favoriten-Tab (Shuffle, Sortieren,
/// Mehrfachauswahl) — vorher stand hier eine nackte [SongList] ohne all das,
/// obwohl es dieselben Songs sind wie im Tab.
class FavoritesListScreen extends StatelessWidget {
const FavoritesListScreen({super.key});
@@ -157,13 +162,15 @@ class FavoritesListScreen extends StatelessWidget {
body: StreamBuilder<List<Song>>(
stream: db.watchFavorites(),
builder: (context, snapshot) {
final songs = snapshot.data ?? const [];
if (songs.isEmpty) {
return const Center(
child: Text('Noch keine Favoriten', style: TextStyle(color: MeloTheme.text2)),
);
}
return SongList(songs);
final songs = snapshot.data ?? const <Song>[];
return SortableSongList(
songs: songs,
storeKey: SortStore.favoriten,
empty: const Center(
child: Text('Noch keine Favoriten',
style: TextStyle(color: MeloTheme.text2)),
),
);
},
),
);