|
|
|
@ -51,6 +51,7 @@ class ChatList extends StatefulWidget {
|
|
|
|
class _ChatListState extends State<ChatList> {
|
|
|
|
class _ChatListState extends State<ChatList> {
|
|
|
|
bool get searchMode => searchController.text?.isNotEmpty ?? false;
|
|
|
|
bool get searchMode => searchController.text?.isNotEmpty ?? false;
|
|
|
|
final TextEditingController searchController = TextEditingController();
|
|
|
|
final TextEditingController searchController = TextEditingController();
|
|
|
|
|
|
|
|
final FocusNode _searchFocusNode = FocusNode();
|
|
|
|
Timer coolDown;
|
|
|
|
Timer coolDown;
|
|
|
|
PublicRoomsResponse publicRoomsResponse;
|
|
|
|
PublicRoomsResponse publicRoomsResponse;
|
|
|
|
bool loadingPublicRooms = false;
|
|
|
|
bool loadingPublicRooms = false;
|
|
|
|
@ -303,10 +304,20 @@ class _ChatListState extends State<ChatList> {
|
|
|
|
child: TextField(
|
|
|
|
child: TextField(
|
|
|
|
autocorrect: false,
|
|
|
|
autocorrect: false,
|
|
|
|
controller: searchController,
|
|
|
|
controller: searchController,
|
|
|
|
|
|
|
|
focusNode: _searchFocusNode,
|
|
|
|
decoration: InputDecoration(
|
|
|
|
decoration: InputDecoration(
|
|
|
|
contentPadding: EdgeInsets.all(9),
|
|
|
|
contentPadding: EdgeInsets.all(9),
|
|
|
|
border: InputBorder.none,
|
|
|
|
border: InputBorder.none,
|
|
|
|
hintText: L10n.of(context).searchForAChat,
|
|
|
|
hintText: L10n.of(context).searchForAChat,
|
|
|
|
|
|
|
|
suffixIcon: searchMode
|
|
|
|
|
|
|
|
? IconButton(
|
|
|
|
|
|
|
|
icon: Icon(Icons.backspace),
|
|
|
|
|
|
|
|
onPressed: () => setState(() {
|
|
|
|
|
|
|
|
searchController.clear();
|
|
|
|
|
|
|
|
_searchFocusNode.unfocus();
|
|
|
|
|
|
|
|
}),
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
: null,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
|