chore: Follow up search UX
This commit is contained in:
parent
62122e5c79
commit
fb384462e0
2 changed files with 8 additions and 2 deletions
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue