From 36475d57db9a638c6ebe9d1979de961d01bef0eb Mon Sep 17 00:00:00 2001 From: poppingmoon <63451158+poppingmoon@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:25:17 +0900 Subject: [PATCH] show refresh button when failed to fetch meta --- .../tab_settings_page/tab_settings_page.dart | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/lib/view/settings_page/tab_settings_page/tab_settings_page.dart b/lib/view/settings_page/tab_settings_page/tab_settings_page.dart index e5c7f5a48..2b7605616 100644 --- a/lib/view/settings_page/tab_settings_page/tab_settings_page.dart +++ b/lib/view/settings_page/tab_settings_page/tab_settings_page.dart @@ -63,19 +63,6 @@ class TabSettingsAddDialogState extends ConsumerState { }; } - @override - void initState() { - super.initState(); - hostController.addListener(() { - if (host != hostController.text) { - setState(() { - host = hostController.text; - }); - refresh(); - } - }); - } - @override void didChangeDependencies() { super.didChangeDependencies(); @@ -215,6 +202,7 @@ class TabSettingsAddDialogState extends ConsumerState { refresh(); }, value: selectedAccount, + isExpanded: true, ), if (selectedAccount == null) ...[ const Padding(padding: EdgeInsets.all(10)), @@ -225,17 +213,29 @@ class TabSettingsAddDialogState extends ConsumerState { prefixIcon: const Icon(Icons.dns), suffixIcon: IconButton( onPressed: () async { - final host = await showDialog( + final result = await showDialog( context: context, builder: (context) => const MisskeyServerListDialog(), ); - if (host != null && host.isNotEmpty) { - hostController.text = host; + if (result != null) { + setState(() { + hostController.text = result; + host = result; + }); + refresh(); } }, icon: const Icon(Icons.search), ), ), + onChanged: (result) { + if (result != host) { + setState(() { + host = result; + }); + refresh(); + } + }, ), ], const Padding(padding: EdgeInsets.all(10)), @@ -272,9 +272,18 @@ class TabSettingsAddDialogState extends ConsumerState { }); }, value: selectedTabType, + isExpanded: true, ); - } else { + } else if (snapshot.connectionState == + ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); + } else { + return Center( + child: IconButton( + onPressed: () => setState(() {}), + icon: const Icon(Icons.refresh), + ), + ); } }, ),