From 7f7aba8e0892059f86f990425face3c4397558fc Mon Sep 17 00:00:00 2001 From: otsmr Date: Fri, 1 May 2026 23:45:38 +0200 Subject: [PATCH] fixes late initation error --- .../views/chats/chat_messages.view.dart | 15 ++++++------ .../typing_indicator.dart | 24 +++++++++---------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/src/visual/views/chats/chat_messages.view.dart b/lib/src/visual/views/chats/chat_messages.view.dart index 62d8e1e8..0a522354 100644 --- a/lib/src/visual/views/chats/chat_messages.view.dart +++ b/lib/src/visual/views/chats/chat_messages.view.dart @@ -40,8 +40,8 @@ class ChatMessagesView extends StatefulWidget { class _ChatMessagesViewState extends State with WidgetsBindingObserver { HashSet alreadyReportedOpened = HashSet(); - late StreamSubscription userSub; - late StreamSubscription> messageSub; + StreamSubscription? userSub; + StreamSubscription>? messageSub; StreamSubscription>? groupActionsSub; StreamSubscription>? contactSub; @@ -55,7 +55,7 @@ class _ChatMessagesViewState extends State List galleryItems = []; Message? quotesMessage; GlobalKey verifyShieldKey = GlobalKey(); - late FocusNode textFieldFocus; + FocusNode? textFieldFocus; final ItemScrollController itemScrollController = ItemScrollController(); int? focusedScrollItem; bool _receiverDeletedAccount = false; @@ -72,11 +72,12 @@ class _ChatMessagesViewState extends State @override void dispose() { - userSub.cancel(); - messageSub.cancel(); + userSub?.cancel(); + messageSub?.cancel(); contactSub?.cancel(); groupActionsSub?.cancel(); _nextTypingIndicator?.cancel(); + textFieldFocus?.dispose(); WidgetsBinding.instance.removeObserver(this); super.dispose(); } @@ -351,7 +352,7 @@ class _ChatMessagesViewState extends State setState(() { quotesMessage = chatMessage; }); - textFieldFocus.requestFocus(); + textFieldFocus?.requestFocus(); }, ), ); @@ -394,7 +395,7 @@ class _ChatMessagesViewState extends State MessageInput( group: group, quotesMessage: quotesMessage, - textFieldFocus: textFieldFocus, + textFieldFocus: textFieldFocus!, onMessageSend: () { setState(() { quotesMessage = null; diff --git a/lib/src/visual/views/chats/chat_messages_components/typing_indicator.dart b/lib/src/visual/views/chats/chat_messages_components/typing_indicator.dart index 804974b2..f7a67fb0 100644 --- a/lib/src/visual/views/chats/chat_messages_components/typing_indicator.dart +++ b/lib/src/visual/views/chats/chat_messages_components/typing_indicator.dart @@ -43,9 +43,8 @@ class TypingIndicator extends StatefulWidget { class _TypingIndicatorState extends State { List _groupMembers = []; - late StreamSubscription> membersSub; - - late Timer _periodicUpdate; + StreamSubscription>? membersSub; + Timer? _periodicUpdate; @override void initState() { @@ -73,8 +72,8 @@ class _TypingIndicatorState extends State { @override void dispose() { - membersSub.cancel(); - _periodicUpdate.cancel(); + membersSub?.cancel(); + _periodicUpdate?.cancel(); super.dispose(); } @@ -138,12 +137,12 @@ class AnimatedTypingDots extends StatefulWidget { class _AnimatedTypingDotsState extends State with SingleTickerProviderStateMixin { - late AnimationController _controller; - - late List> _animations; + AnimationController? _controller; + List>? _animations; @override void initState() { + super.initState(); _controller = AnimationController( duration: const Duration(milliseconds: 1000), vsync: this, @@ -172,29 +171,30 @@ class _AnimatedTypingDotsState extends State ), ]).animate( CurvedAnimation( - parent: _controller, + parent: _controller!, curve: Interval(start, end), ), ); }); - super.initState(); } @override void dispose() { - _controller.dispose(); + _controller?.dispose(); super.dispose(); } @override Widget build(BuildContext context) { + if (_animations == null) return const SizedBox.shrink(); + return Row( mainAxisSize: MainAxisSize.min, children: List.generate( 3, (index) => _AnimatedDot( isTyping: widget.isTyping, - animation: _animations[index], + animation: _animations![index], ), ), );