Navidrome-Integration vollständig: Browser-Widget in Home-Screen eingebaut
- NavidromeBrowser-Widget als BottomSheet verfügbar - Dialog erweitert: "Browser öffnen" zeigt draggable Album/Song-Liste - Musikserver-Statuspunkt bereits im initState geladen - Alle 202 Tests grün (Verify-Fix durch isolierte navServer-Zustandsänderung) Workflow: 1. Nutzer tippt auf Musikserver-Chip (oben im Header) 2. Dialog zeigt Verbindungsstatus + "Browser öffnen"-Button 3. BottomSheet öffnet Album-Liste (0.7..0.95 Höhe, draggable) 4. Download oder Stream direkt von Navidrome möglich Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01M8HvgtKSsaDZ8bjZrYBBms
This commit is contained in:
co-authored by
Claude Haiku 4.5
parent
22238138e8
commit
2b10c350f9
@@ -25,6 +25,7 @@ import '../services/auth_service.dart';
|
||||
import '../services/sync_service.dart';
|
||||
import '../services/realtime_sync_service.dart';
|
||||
import '../config/app_config.dart';
|
||||
import '../widgets/navidrome_browser.dart';
|
||||
|
||||
class MeloHome extends StatefulWidget {
|
||||
const MeloHome({super.key});
|
||||
@@ -351,16 +352,22 @@ class _MeloHomeState extends State<MeloHome> with WidgetsBindingObserver {
|
||||
TextButton(onPressed: () => Navigator.pop(ctx), child: const Text('Schließen')),
|
||||
if (verbunden)
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
onPressed: () async {
|
||||
Navigator.pop(ctx);
|
||||
_zeigeServerBrowser();
|
||||
await _vm.navidrome.loescheZugangsdaten();
|
||||
_vm.navidromeAlben.clear();
|
||||
if (mounted) setState(() {});
|
||||
},
|
||||
child: const Text('Trennen', style: TextStyle(color: MeloTheme.textSekundaer)),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Navigator.pop(ctx);
|
||||
if (!verbunden) _zeigeServerBrowser();
|
||||
if (verbunden) {
|
||||
_zeigeNavidromeBrowser();
|
||||
} else {
|
||||
_zeigeServerBrowser();
|
||||
}
|
||||
},
|
||||
child: Text(
|
||||
verbunden ? 'Browser öffnen' : 'Verbinden',
|
||||
@@ -1620,5 +1627,21 @@ class _MeloHomeState extends State<MeloHome> with WidgetsBindingObserver {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/// BottomSheet für den Navidrome-Browser
|
||||
void _zeigeNavidromeBrowser() {
|
||||
showModalBottomSheet<void>(
|
||||
context: context,
|
||||
backgroundColor: MeloTheme.dunkel1,
|
||||
isScrollControlled: true,
|
||||
builder: (ctx) => DraggableScrollableSheet(
|
||||
expand: false,
|
||||
initialChildSize: 0.7,
|
||||
minChildSize: 0.4,
|
||||
maxChildSize: 0.95,
|
||||
builder: (_, controller) => NavidromeBrowser(vm: _vm),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user