From 4aa224a5e6dba291da80dac2c0c6a9a286abe62f Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 12 Jan 2021 16:58:52 +0100 Subject: [PATCH] fix messageinput focus --- example/lib/main.dart | 7 +++++-- example/pubspec.yaml | 2 +- lib/src/message_input.dart | 5 ++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index 98fa71a2..49ee3fdc 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -623,8 +623,8 @@ class _ChannelPageState extends State { @override void initState() { - super.initState(); _focusNode = FocusNode(); + super.initState(); } @override @@ -635,7 +635,9 @@ class _ChannelPageState extends State { void _reply(Message message) { setState(() => _quotedMessage = message); - _focusNode.requestFocus(); + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + _focusNode.requestFocus(); + }); } @override @@ -752,6 +754,7 @@ class _ChannelPageState extends State { quotedMessage: _quotedMessage, onQuotedMessageCleared: () { setState(() => _quotedMessage = null); + _focusNode.unfocus(); }, ), ], diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 1605cdd5..2b8859ea 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,6 +1,6 @@ name: example description: A new Flutter project. -version: 1.1.1 +version: 1.1.1+1 environment: sdk: ">=2.2.2 <3.0.0" diff --git a/lib/src/message_input.dart b/lib/src/message_input.dart index 4561372e..cc12fbd9 100644 --- a/lib/src/message_input.dart +++ b/lib/src/message_input.dart @@ -203,6 +203,8 @@ class MessageInputState extends State { bool _openFilePickerSection = false; int _filePickerIndex = 0; double _filePickerSize = _kMinMediaPickerSize; + KeyboardVisibilityController _keyboardVisibilityController = + KeyboardVisibilityController(); /// The editing controller passed to the input TextField TextEditingController textEditingController; @@ -2249,7 +2251,8 @@ class MessageInputState extends State { _emojiNames = Emoji.all().map((e) => e.name); if (!kIsWeb) { - _keyboardListener = KeyboardVisibility.onChange.listen((visible) { + _keyboardListener = + _keyboardVisibilityController.onChange.listen((visible) { if (_focusNode.hasFocus) { _onChanged(context, textEditingController.text); }