UX-Simulation, Teil 2: Player-Feinschliff, Downloads, Einstellungen
Zweiter Block aus der UX-Simulation (39 Funde insgesamt): - Songtext-Icon deaktiviert statt totem Knopf, wenn kein Ziel bekannt ist - Sleep-Timer-Restzeit jetzt auch im Sheet sichtbar, nicht nur im Tooltip - Drag-Handle in der Warteschlange, Wisch-nach-unten schließt den Vollbild-Player - Fehlender Tooltip am Songtext-Sheet-Schließen-Knopf ergänzt - YouTube-Download: Zeitüberschreitung meldet sich anders als toter Server - Server-Tab zeigte beim Öffnen kurz fälschlich "nicht verbunden" - Einstellungen: Favoriten-/Playlisten-Sync von "Speicher" zu "Musikserver" verschoben, Navidrome-Eintrag erklärt jetzt seinen Zweck - Kommentar in geteilte_adresse.dart korrigiert (Verhalten unverändert, dafür gibt es einen Test) Bewusst zurückgestellt: ServerFavoriteButton bleibt lokal-only (dokumentierte Architektur-Entscheidung, siehe G3 im UX-Review), Live-Wischgeste am Mini-Player, YouTube-Download-Abbrechen, Download-Badge im inaktiven Unterreiter, Versionsnummer (neue Abhängigkeit nötig). 539 Tests grün (vorher 537), flutter analyze ohne Befund.
This commit is contained in:
@@ -166,9 +166,11 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
ListTile(
|
||||
leading: const Icon(Icons.cloud_circle),
|
||||
title: const Text('Navidrome'),
|
||||
subtitle: _navidrome.istVerbunden
|
||||
? const Text('Verbunden')
|
||||
: const Text('Nicht verbunden'),
|
||||
// "Navidrome" allein ist nur der Name der Server-Software — ohne
|
||||
// den Zusatz muss man raten, wofür der Eintrag da ist.
|
||||
subtitle: Text(_navidrome.istVerbunden
|
||||
? 'Eigener Musik-Server · Verbunden'
|
||||
: 'Eigener Musik-Server (optional) · Nicht verbunden'),
|
||||
trailing: _navidrome.istVerbunden
|
||||
? IconButton(
|
||||
icon: const Icon(Icons.logout),
|
||||
@@ -201,6 +203,26 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
},
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.favorite),
|
||||
title: const Text('Favoriten-Sync'),
|
||||
subtitle: const Text('Favoriten vom Server importieren'),
|
||||
trailing: IconButton(
|
||||
tooltip: 'Vom Server laden',
|
||||
icon: const Icon(Icons.cloud_download),
|
||||
onPressed: () => _syncServerFavorites(),
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.playlist_play),
|
||||
title: const Text('Playlisten-Sync'),
|
||||
subtitle: const Text('Server-Playlisten importieren'),
|
||||
trailing: IconButton(
|
||||
tooltip: 'Vom Server laden',
|
||||
icon: const Icon(Icons.cloud_download),
|
||||
onPressed: () => _syncServerPlaylists(),
|
||||
),
|
||||
),
|
||||
const _SectionLabel('Speicher'),
|
||||
StreamBuilder<List<Download>>(
|
||||
stream: db.watchDownloads(),
|
||||
@@ -256,26 +278,6 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
},
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.favorite),
|
||||
title: const Text('Favoriten-Sync'),
|
||||
subtitle: const Text('Favoriten vom Server importieren'),
|
||||
trailing: IconButton(
|
||||
tooltip: 'Vom Server laden',
|
||||
icon: const Icon(Icons.cloud_download),
|
||||
onPressed: () => _syncServerFavorites(),
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.playlist_play),
|
||||
title: const Text('Playlisten-Sync'),
|
||||
subtitle: const Text('Server-Playlisten importieren'),
|
||||
trailing: IconButton(
|
||||
tooltip: 'Vom Server laden',
|
||||
icon: const Icon(Icons.cloud_download),
|
||||
onPressed: () => _syncServerPlaylists(),
|
||||
),
|
||||
),
|
||||
const Divider(height: 1),
|
||||
const _SectionLabel('Geräte-Abgleich'),
|
||||
const _CloudSyncBereich(),
|
||||
|
||||
Reference in New Issue
Block a user