From d923b01df7bf97b09748269079a4388c058cf2b0 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Mon, 15 Nov 2021 17:00:00 +0530 Subject: [PATCH] fix for unfocusing bug --- .../stream_chat_flutter/lib/src/message_input.dart | 11 +++++++++-- .../lib/src/message_list_view.dart | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 08fc2a7b..a08c799b 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -204,6 +204,7 @@ class MessageInput extends StatefulWidget { this.commandButtonBuilder, this.customOverlays = const [], this.mentionAllAppUsers = false, + this.shouldKeepFocusAfterMessage, }) : assert( initialMessage == null || editMessage == null, "Can't provide both `initialMessage` and `editMessage`", @@ -322,6 +323,8 @@ class MessageInput extends StatefulWidget { /// Defaults to false. final bool mentionAllAppUsers; + final bool? shouldKeepFocusAfterMessage; + @override MessageInputState createState() => MessageInputState(); @@ -1759,7 +1762,9 @@ class MessageInputState extends State { return; } - final shouldUnfocus = _commandEnabled; + var shouldKeepFocus = widget.shouldKeepFocusAfterMessage; + + shouldKeepFocus ??= !_commandEnabled; if (_commandEnabled) { text = '${'/${_chosenCommand!.name} '}$text'; @@ -1822,8 +1827,10 @@ class MessageInputState extends State { sendingFuture = channel.updateMessage(message); } - if (!shouldUnfocus) { + if (shouldKeepFocus) { FocusScope.of(context).requestFocus(_focusNode); + } else { + FocusScope.of(context).unfocus(); } final resp = await sendingFuture; diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 5424a1c2..a91c44db 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -444,7 +444,7 @@ class _MessageListViewState extends State { message: statusString, child: LazyLoadScrollView( onPageScrollStart: () { - FocusScope.of(context).unfocus(); + //FocusScope.of(context).unfocus(); }, onStartOfPage: () async { _inBetweenList = false;