chore: Follow up search UX

This commit is contained in:
krille-chan 2023-08-13 13:13:52 +02:00
parent 62122e5c79
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(() {
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<ChatList>
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<ChatList>
roomSearchResult = userSearchResult = null;
isSearching = false;
});
if (unfocus) FocusManager.instance.primaryFocus?.unfocus();
if (unfocus) searchFocusNode.unfocus();
}
bool isTorBrowser = false;

View file

@ -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(