From 4b346d30fb50fe4b71736cd6101b64af9c66d81a Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Fri, 19 Jul 2024 19:22:46 +0800 Subject: [PATCH] fix: storage selector --- ui/lib/search.dart | 2 + ui/lib/system_settings.dart | 97 ++++++++++++++++++++----------------- 2 files changed, 54 insertions(+), 45 deletions(-) diff --git a/ui/lib/search.dart b/ui/lib/search.dart index 7d6d615..d606d09 100644 --- a/ui/lib/search.dart +++ b/ui/lib/search.dart @@ -156,6 +156,7 @@ class _SearchPageState extends ConsumerState { crossAxisAlignment: CrossAxisAlignment.start, children: [ DropdownMenu( + width: 200, label: const Text("清晰度"), initialSelection: resSelected, dropdownMenuEntries: const [ @@ -175,6 +176,7 @@ class _SearchPageState extends ConsumerState { crossAxisAlignment: CrossAxisAlignment.start, children: [ DropdownMenu( + width: 200, label: const Text("存储位置"), initialSelection: storageSelected, dropdownMenuEntries: v diff --git a/ui/lib/system_settings.dart b/ui/lib/system_settings.dart index 1a1edb6..7b20881 100644 --- a/ui/lib/system_settings.dart +++ b/ui/lib/system_settings.dart @@ -395,51 +395,58 @@ class _SystemSettingsPageState extends ConsumerState { } String selectImpl = s.implementation == null ? "local" : s.implementation!; - final widgets = [ - DropdownMenu( - label: const Text("类型"), - onSelected: (value) { - setState(() { - selectImpl = value!; - }); - }, - initialSelection: selectImpl, - dropdownMenuEntries: const [ - DropdownMenuEntry(value: "local", label: "本地存储"), - DropdownMenuEntry(value: "webdav", label: "webdav") + final widgets = + StatefulBuilder(builder: (BuildContext context, StateSetter setState) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + DropdownMenu( + label: const Text("类型"), + onSelected: (value) { + setState(() { + selectImpl = value!; + }); + }, + initialSelection: selectImpl, + dropdownMenuEntries: const [ + DropdownMenuEntry(value: "local", label: "本地存储"), + DropdownMenuEntry(value: "webdav", label: "webdav") + ], + ), + TextField( + decoration: const InputDecoration(labelText: "名称"), + controller: nameController, + ), + selectImpl != "local" + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextField( + decoration: const InputDecoration(labelText: "Webdav地址"), + controller: urlController, + ), + TextField( + decoration: const InputDecoration(labelText: "用户"), + controller: userController, + ), + TextField( + decoration: const InputDecoration(labelText: "密码"), + controller: passController, + ), + ], + ) + : Container(), + TextField( + decoration: const InputDecoration(labelText: "电视剧路径"), + controller: tvPathController, + ), + TextField( + decoration: const InputDecoration(labelText: "电影路径"), + controller: moviePathController, + ) ], - ), - TextField( - decoration: const InputDecoration(labelText: "名称"), - controller: nameController, - ), - selectImpl != "local" - ? Column( - children: [ - TextField( - decoration: const InputDecoration(labelText: "Webdav地址"), - controller: urlController, - ), - TextField( - decoration: const InputDecoration(labelText: "用户"), - controller: userController, - ), - TextField( - decoration: const InputDecoration(labelText: "密码"), - controller: passController, - ), - ], - ) - : Container(), - TextField( - decoration: const InputDecoration(labelText: "电视剧路径"), - controller: tvPathController, - ), - TextField( - decoration: const InputDecoration(labelText: "电影路径"), - controller: moviePathController, - ) - ]; + ); + }); onSubmit() async { return ref.read(storageSettingProvider.notifier).addStorage(Storage( name: nameController.text, @@ -458,7 +465,7 @@ class _SystemSettingsPageState extends ConsumerState { return ref.read(storageSettingProvider.notifier).deleteStorage(s.id!); } - return showSettingDialog('存储', s.id != null, widgets, onSubmit, onDelete); + return showSettingDialog('存储', s.id != null, [widgets], onSubmit, onDelete); } Future showSettingDialog(