From dcbdfc32eadd34673cec6383a5ed7975203c7b6b Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 11 Jan 2022 12:48:42 +0530 Subject: [PATCH] added mip didUpdateWidget for focusnode --- packages/stream_chat_flutter/CHANGELOG.md | 4 ++++ .../lib/src/message_input/message_input.dart | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 258e4cc5..db9fef23 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -12,6 +12,10 @@ - Videos can now be auto-played in `FullScreenMedia` +🔄 Changed + +- Add `didUpdateWidget` override in `MessageInput` widget to handle changes to `focusNode`. + ## 3.3.2 - Updated `stream_chat_flutter_core` dependency to [`3.3.1`](https://pub.dev/packages/stream_chat_flutter_core/changelog). diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index e55fac19..c9443007 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -352,7 +352,7 @@ class MessageInput extends StatefulWidget { class MessageInputState extends State with RestorationMixin { final _imagePicker = ImagePicker(); - late final _focusNode = widget.focusNode ?? FocusNode(); + late var _focusNode = widget.focusNode ?? FocusNode(); bool _inputEnabled = true; bool get _commandEnabled => _effectiveController.value.command != null; bool _showCommandsOverlay = false; @@ -419,6 +419,13 @@ class MessageInputState extends State _controller!.dispose(); _controller = null; } + + // Update _focusNode + if (widget.focusNode != null && oldWidget.focusNode != widget.focusNode) { + _focusNode.removeListener(_focusNodeListener); + _focusNode = widget.focusNode!; + _focusNode.addListener(_focusNodeListener); + } } @override