Release textEditingController listeners in dispose.
This commit is contained in:
+34
-20
@@ -284,22 +284,24 @@ class _NewChatScreenState extends State<NewChatScreen> {
|
|||||||
|
|
||||||
Channel channel;
|
Channel channel;
|
||||||
|
|
||||||
|
void _userNameListener() {
|
||||||
|
setState(() {
|
||||||
|
_userNameQuery = _controller.text;
|
||||||
|
_isSearchActive = _userNameQuery.isNotEmpty;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
channel = StreamChat.of(context).client.channel('messaging');
|
channel = StreamChat.of(context).client.channel('messaging');
|
||||||
_controller = TextEditingController()
|
_controller = TextEditingController()..addListener(_userNameListener);
|
||||||
..addListener(() {
|
|
||||||
setState(() {
|
|
||||||
_userNameQuery = _controller.text;
|
|
||||||
_isSearchActive = _userNameQuery.isNotEmpty;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_controller?.clear();
|
_controller?.clear();
|
||||||
|
_controller?.removeListener(_userNameListener);
|
||||||
_controller?.dispose();
|
_controller?.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
@@ -489,21 +491,23 @@ class _NewGroupChatScreenState extends State<NewGroupChatScreen> {
|
|||||||
|
|
||||||
bool _isSearchActive = false;
|
bool _isSearchActive = false;
|
||||||
|
|
||||||
|
void _userNameListener() {
|
||||||
|
setState(() {
|
||||||
|
_userNameQuery = _controller.text;
|
||||||
|
_isSearchActive = _userNameQuery.isNotEmpty;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_controller = TextEditingController()
|
_controller = TextEditingController()..addListener(_userNameListener);
|
||||||
..addListener(() {
|
|
||||||
setState(() {
|
|
||||||
_userNameQuery = _controller.text;
|
|
||||||
_isSearchActive = _userNameQuery.isNotEmpty;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_controller?.clear();
|
_controller?.clear();
|
||||||
|
_controller?.removeListener(_userNameListener);
|
||||||
_controller?.dispose();
|
_controller?.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
@@ -723,18 +727,28 @@ class _GroupChatDetailsScreenState extends State<GroupChatDetailsScreen> {
|
|||||||
|
|
||||||
int get _totalUsers => _selectedUsers.length;
|
int get _totalUsers => _selectedUsers.length;
|
||||||
|
|
||||||
|
void _groupNameListener() {
|
||||||
|
final name = _groupNameController.text;
|
||||||
|
setState(() {
|
||||||
|
_isGroupNameEmpty = name.isEmpty;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_channel = StreamChat.of(context).client.channel('messaging');
|
_channel = StreamChat.of(context).client.channel('messaging');
|
||||||
_selectedUsers.addAll(widget.selectedUsers);
|
_selectedUsers.addAll(widget.selectedUsers);
|
||||||
_groupNameController = TextEditingController()
|
_groupNameController = TextEditingController()
|
||||||
..addListener(() {
|
..addListener(_groupNameListener);
|
||||||
final name = _groupNameController.text;
|
}
|
||||||
setState(() {
|
|
||||||
_isGroupNameEmpty = name.isEmpty;
|
@override
|
||||||
});
|
void dispose() {
|
||||||
});
|
_groupNameController?.clear();
|
||||||
|
_groupNameController?.removeListener(_groupNameListener);
|
||||||
|
_groupNameController?.dispose();
|
||||||
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
Reference in New Issue
Block a user