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:
@@ -101,6 +101,10 @@ class _ServerBrowserState extends State<_ServerBrowser> {
|
||||
List<SubsonicArtist> _artists = [];
|
||||
bool _loading = false;
|
||||
bool _laedtNach = false;
|
||||
// Solange die gespeicherten Zugangsdaten noch geladen werden, ist
|
||||
// _nav.istVerbunden fälschlich noch false — ohne diesen Zustand blitzte
|
||||
// beim Öffnen kurz "nicht verbunden" auf, obwohl der Server verbunden ist.
|
||||
bool _pruefeZugangsdaten = true;
|
||||
/// Der Server hat weniger als eine volle Seite geliefert — dann ist Schluss.
|
||||
bool _alleAlbenDa = false;
|
||||
bool _showArtists = false;
|
||||
@@ -110,9 +114,9 @@ class _ServerBrowserState extends State<_ServerBrowser> {
|
||||
void initState() {
|
||||
super.initState();
|
||||
_nav.ladeGespeicherteZugangsdaten().then((_) {
|
||||
if (_nav.istVerbunden && mounted) {
|
||||
_loadAlbums();
|
||||
}
|
||||
if (!mounted) return;
|
||||
setState(() => _pruefeZugangsdaten = false);
|
||||
if (_nav.istVerbunden) _loadAlbums();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -197,6 +201,12 @@ class _ServerBrowserState extends State<_ServerBrowser> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (_pruefeZugangsdaten) {
|
||||
return const Center(
|
||||
child: CircularProgressIndicator(color: MeloTheme.red),
|
||||
);
|
||||
}
|
||||
|
||||
if (!_nav.istVerbunden) {
|
||||
return Center(
|
||||
child: Column(
|
||||
|
||||
Reference in New Issue
Block a user