chore: Follow up search UX

This commit is contained in:
krille-chan 2023-08-13 13:13:52 +02:00
commit fb384462e0
No known key found for this signature in database
2 changed files with 8 additions and 2 deletions

View file

@ -192,10 +192,12 @@ class ChatListController extends State<ChatList>
setState(() { setState(() {
searchServer = newServer.single; searchServer = newServer.single;
}); });
onSearchEnter(searchController.text); _coolDown?.cancel();
_coolDown = Timer(const Duration(milliseconds: 500), _search);
} }
final TextEditingController searchController = TextEditingController(); final TextEditingController searchController = TextEditingController();
final FocusNode searchFocusNode = FocusNode();
void _search() async { void _search() async {
final client = Matrix.of(context).client; final client = Matrix.of(context).client;
@ -251,6 +253,9 @@ class ChatListController extends State<ChatList>
setState(() { setState(() {
isSearchMode = true; isSearchMode = true;
}); });
searchFocusNode.requestFocus();
_coolDown?.cancel();
_coolDown = Timer(const Duration(milliseconds: 500), _search);
} }
void cancelSearch({bool unfocus = true}) { void cancelSearch({bool unfocus = true}) {
@ -260,7 +265,7 @@ class ChatListController extends State<ChatList>
roomSearchResult = userSearchResult = null; roomSearchResult = userSearchResult = null;
isSearching = false; isSearching = false;
}); });
if (unfocus) FocusManager.instance.primaryFocus?.unfocus(); if (unfocus) searchFocusNode.unfocus();
} }
bool isTorBrowser = false; bool isTorBrowser = false;

View file

@ -45,6 +45,7 @@ class ChatListHeader extends StatelessWidget implements PreferredSizeWidget {
) )
: TextField( : TextField(
controller: controller.searchController, controller: controller.searchController,
focusNode: controller.searchFocusNode,
textInputAction: TextInputAction.search, textInputAction: TextInputAction.search,
onChanged: controller.onSearchEnter, onChanged: controller.onSearchEnter,
decoration: InputDecoration( decoration: InputDecoration(