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:
@@ -133,7 +133,8 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
secondary: const Icon(Icons.equalizer),
|
||||
title: const Text('Gleiche Lautstärke'),
|
||||
subtitle: const Text(
|
||||
'Senkt laute Titel ab (nur bei Dateien mit ReplayGain-Tag)'),
|
||||
'Senkt laute Titel automatisch ab (wirkt nur bei Titeln '
|
||||
'mit Lautstärke-Metadaten)'),
|
||||
value: settings.normalizeVolume,
|
||||
onChanged: settings.setNormalizeVolume,
|
||||
),
|
||||
@@ -281,7 +282,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
const Divider(height: 1),
|
||||
const _SectionLabel('Berechtigungen'),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.mic_none),
|
||||
leading: const Icon(Icons.perm_media_outlined),
|
||||
title: const Text('Musik-Berechtigung'),
|
||||
trailing: TextButton(
|
||||
onPressed: openMusicPermissionSettings,
|
||||
@@ -457,11 +458,51 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
}
|
||||
|
||||
Future<void> _trennNavidrome() async {
|
||||
final ja = await showDialog<bool>(
|
||||
context: context,
|
||||
builder: (ctx) => AlertDialog(
|
||||
title: const Text('Von Navidrome abmelden?'),
|
||||
content: const Text(
|
||||
'Die gespeicherten Zugangsdaten werden gelöscht. Für die '
|
||||
'erneute Anmeldung brauchst du Server-Adresse, Benutzername '
|
||||
'und Passwort wieder.'),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => Navigator.pop(ctx, false),
|
||||
child: const Text('Abbrechen'),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () => Navigator.pop(ctx, true),
|
||||
child: const Text('Abmelden'),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
if (ja != true) return;
|
||||
await _navidrome.loescheZugangsdaten();
|
||||
if (mounted) setState(() {});
|
||||
}
|
||||
|
||||
Future<void> _clearCache() async {
|
||||
final ja = await showDialog<bool>(
|
||||
context: context,
|
||||
builder: (ctx) => AlertDialog(
|
||||
title: const Text('Zwischenspeicher leeren?'),
|
||||
content: Text('${_formatBytes(_cacheSize)} werden gelöscht. '
|
||||
'Beim nächsten Abspielen lädt Melo diese Titel erneut.'),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => Navigator.pop(ctx, false),
|
||||
child: const Text('Abbrechen'),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () => Navigator.pop(ctx, true),
|
||||
child: const Text('Leeren'),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
if (ja != true) return;
|
||||
await _cache.clearCache();
|
||||
if (mounted) {
|
||||
setState(() => _cacheSize = 0);
|
||||
@@ -558,7 +599,7 @@ class _CloudSyncBereich extends StatelessWidget {
|
||||
leading: Icon(Icons.cloud_off),
|
||||
title: Text('Nicht angemeldet'),
|
||||
subtitle: Text(
|
||||
'Für den Abgleich im Tab „Online“ beim Baka-Konto anmelden'),
|
||||
'Für den Abgleich im Download-Tab beim Baka-Konto anmelden'),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user