refactor: Remove unnecessary setState in ChatPage for better performance
This commit is contained in:
parent
a615de889e
commit
63d7bef515
3 changed files with 221 additions and 214 deletions
|
|
@ -187,8 +187,6 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
|
||||
final int _loadHistoryCount = 100;
|
||||
|
||||
String inputText = '';
|
||||
|
||||
String pendingText = '';
|
||||
|
||||
bool showEmojiPicker = false;
|
||||
|
|
@ -260,7 +258,6 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
if (!mounted) {
|
||||
return;
|
||||
}
|
||||
setReadMarker();
|
||||
if (!scrollController.hasClients) return;
|
||||
if (timeline?.allowNewEvent == false ||
|
||||
scrollController.position.pixels > 0 && _scrolledUp == false) {
|
||||
|
|
@ -285,7 +282,6 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
final draft = prefs.getString('draft_$roomId');
|
||||
if (draft != null && draft.isNotEmpty) {
|
||||
sendController.text = draft;
|
||||
setState(() => inputText = draft);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -472,7 +468,7 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
);
|
||||
|
||||
setState(() {
|
||||
inputText = pendingText;
|
||||
sendController.text = pendingText;
|
||||
replyEvent = null;
|
||||
editEvent = null;
|
||||
pendingText = '';
|
||||
|
|
@ -938,7 +934,7 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
);
|
||||
});
|
||||
await loadTimelineFuture;
|
||||
setReadMarker(eventId: timeline!.events.first.eventId);
|
||||
setReadMarker();
|
||||
}
|
||||
scrollController.jumpTo(0);
|
||||
}
|
||||
|
|
@ -1040,7 +1036,7 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
setState(() {
|
||||
pendingText = sendController.text;
|
||||
editEvent = selectedEvents.first;
|
||||
inputText = sendController.text =
|
||||
sendController.text =
|
||||
editEvent!.getDisplayEvent(timeline!).calcLocalizedBodyFallback(
|
||||
MatrixLocals(L10n.of(context)!),
|
||||
withSenderNamePrefix: false,
|
||||
|
|
@ -1187,7 +1183,6 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setString('draft_$roomId', text);
|
||||
});
|
||||
setReadMarker();
|
||||
if (text.endsWith(' ') && Matrix.of(context).hasComplexBundles) {
|
||||
final clients = currentRoomBundle;
|
||||
for (final client in clients) {
|
||||
|
|
@ -1196,7 +1191,6 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
text.toLowerCase() == '${prefix.toLowerCase()} ') {
|
||||
setSendingClient(client);
|
||||
setState(() {
|
||||
inputText = '';
|
||||
sendController.text = '';
|
||||
});
|
||||
return;
|
||||
|
|
@ -1222,9 +1216,15 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
);
|
||||
}
|
||||
}
|
||||
setState(() => inputText = text);
|
||||
if (_inputTextIsEmpty != text.isEmpty) {
|
||||
setState(() {
|
||||
_inputTextIsEmpty = text.isEmpty;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
bool _inputTextIsEmpty = true;
|
||||
|
||||
bool get isArchived =>
|
||||
{Membership.leave, Membership.ban}.contains(room.membership);
|
||||
|
||||
|
|
@ -1291,7 +1291,7 @@ class ChatController extends State<ChatPageWithRoom> {
|
|||
|
||||
void cancelReplyEventAction() => setState(() {
|
||||
if (editEvent != null) {
|
||||
inputText = sendController.text = pendingText;
|
||||
sendController.text = pendingText;
|
||||
pendingText = '';
|
||||
}
|
||||
replyEvent = null;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue