diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 88d6c512c..7f50c9cee 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -192,10 +192,12 @@ class ChatListController extends State setState(() { searchServer = newServer.single; }); - onSearchEnter(searchController.text); + _coolDown?.cancel(); + _coolDown = Timer(const Duration(milliseconds: 500), _search); } final TextEditingController searchController = TextEditingController(); + final FocusNode searchFocusNode = FocusNode(); void _search() async { final client = Matrix.of(context).client; @@ -251,6 +253,9 @@ class ChatListController extends State setState(() { isSearchMode = true; }); + searchFocusNode.requestFocus(); + _coolDown?.cancel(); + _coolDown = Timer(const Duration(milliseconds: 500), _search); } void cancelSearch({bool unfocus = true}) { @@ -260,7 +265,7 @@ class ChatListController extends State roomSearchResult = userSearchResult = null; isSearching = false; }); - if (unfocus) FocusManager.instance.primaryFocus?.unfocus(); + if (unfocus) searchFocusNode.unfocus(); } bool isTorBrowser = false; diff --git a/lib/pages/chat_list/chat_list_header.dart b/lib/pages/chat_list/chat_list_header.dart index 8d58aed48..f9675a8dd 100644 --- a/lib/pages/chat_list/chat_list_header.dart +++ b/lib/pages/chat_list/chat_list_header.dart @@ -45,6 +45,7 @@ class ChatListHeader extends StatelessWidget implements PreferredSizeWidget { ) : TextField( controller: controller.searchController, + focusNode: controller.searchFocusNode, textInputAction: TextInputAction.search, onChanged: controller.onSearchEnter, decoration: InputDecoration(