From 64b254d24f9afb38e2da100383ed4e2f6cc66258 Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Fri, 19 Jul 2024 19:40:23 +0800 Subject: [PATCH] fix: show correct path when select storage --- ui/lib/search.dart | 102 ++++++++++++++++++++++++++------------------- 1 file changed, 59 insertions(+), 43 deletions(-) diff --git a/ui/lib/search.dart b/ui/lib/search.dart index d606d09..3c54c92 100644 --- a/ui/lib/search.dart +++ b/ui/lib/search.dart @@ -172,50 +172,66 @@ class _SearchPageState extends ConsumerState { ), storage.when( data: (v) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - DropdownMenu( - width: 200, - label: const Text("存储位置"), - initialSelection: storageSelected, - dropdownMenuEntries: v - .map((s) => DropdownMenuEntry( - label: s.name!, value: s.id)) - .toList(), - onSelected: (value) { - setState(() { - storageSelected = value!; - }); - }, - ), - item.mediaType == "tv" - ? name.when( - data: (s) { - final path = v[storageSelected] - .settings!["tv_path"]; + return StatefulBuilder( + builder: (context, setState) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + DropdownMenu( + width: 200, + label: const Text("存储位置"), + initialSelection: storageSelected, + dropdownMenuEntries: v + .map((s) => DropdownMenuEntry( + label: s.name!, value: s.id)) + .toList(), + onSelected: (value) { + setState(() { + storageSelected = value!; + }); + }, + ), + item.mediaType == "tv" + ? name.when( + data: (s) { + return storageSelected == 0 + ? const Text("") + : () { + final storage = v + .where((e) => + e.id == + storageSelected) + .first; + final path = storage + .settings!["tv_path"]; - pathController.text = s; - return SizedBox( - //width: 300, - child: TextField( - controller: pathController, - decoration: InputDecoration( - labelText: "存储路径", - prefix: Text(path)), - ), - ); - }, - error: (error, stackTrace) => - Text("$error"), - loading: () => - const MyProgressIndicator( - size: 20, - ), - ) - : Text(""), - ], - ); + pathController.text = s; + return SizedBox( + //width: 300, + child: TextField( + controller: + pathController, + decoration: + InputDecoration( + labelText: + "存储路径", + prefix: + Text(path)), + ), + ); + }(); + }, + error: (error, stackTrace) => + Text("$error"), + loading: () => + const MyProgressIndicator( + size: 20, + ), + ) + : Text(""), + ], + ); + }); }, error: (err, trace) => Text("$err"), loading: () => const MyProgressIndicator()),