Merge pull request #854 from GetStream/mip-duw
fix(ui): added mip didUpdateWidget for focusnode
This commit is contained in:
@@ -12,6 +12,10 @@
|
|||||||
|
|
||||||
- Videos can now be auto-played in `FullScreenMedia`
|
- Videos can now be auto-played in `FullScreenMedia`
|
||||||
|
|
||||||
|
🔄 Changed
|
||||||
|
|
||||||
|
- Add `didUpdateWidget` override in `MessageInput` widget to handle changes to `focusNode`.
|
||||||
|
|
||||||
## 3.3.2
|
## 3.3.2
|
||||||
|
|
||||||
- Updated `stream_chat_flutter_core` dependency to [`3.3.1`](https://pub.dev/packages/stream_chat_flutter_core/changelog).
|
- Updated `stream_chat_flutter_core` dependency to [`3.3.1`](https://pub.dev/packages/stream_chat_flutter_core/changelog).
|
||||||
|
|||||||
@@ -352,7 +352,7 @@ class MessageInput extends StatefulWidget {
|
|||||||
class MessageInputState extends State<MessageInput>
|
class MessageInputState extends State<MessageInput>
|
||||||
with RestorationMixin<MessageInput> {
|
with RestorationMixin<MessageInput> {
|
||||||
final _imagePicker = ImagePicker();
|
final _imagePicker = ImagePicker();
|
||||||
late final _focusNode = widget.focusNode ?? FocusNode();
|
late FocusNode _focusNode = widget.focusNode ?? FocusNode();
|
||||||
bool _inputEnabled = true;
|
bool _inputEnabled = true;
|
||||||
bool get _commandEnabled => _effectiveController.value.command != null;
|
bool get _commandEnabled => _effectiveController.value.command != null;
|
||||||
bool _showCommandsOverlay = false;
|
bool _showCommandsOverlay = false;
|
||||||
@@ -398,11 +398,7 @@ class MessageInputState extends State<MessageInput>
|
|||||||
if (widget.messageInputController == null) {
|
if (widget.messageInputController == null) {
|
||||||
_createLocalController();
|
_createLocalController();
|
||||||
} else {
|
} else {
|
||||||
_effectiveController.textEditingController
|
_initialiseEffectiveController();
|
||||||
.removeListener(_onChangedDebounced);
|
|
||||||
_effectiveController.textEditingController
|
|
||||||
.addListener(_onChangedDebounced);
|
|
||||||
if (!_isEditing && _timeOut <= 0) _startSlowMode();
|
|
||||||
}
|
}
|
||||||
_focusNode.addListener(_focusNodeListener);
|
_focusNode.addListener(_focusNodeListener);
|
||||||
}
|
}
|
||||||
@@ -418,6 +414,14 @@ class MessageInputState extends State<MessageInput>
|
|||||||
unregisterFromRestoration(_controller!);
|
unregisterFromRestoration(_controller!);
|
||||||
_controller!.dispose();
|
_controller!.dispose();
|
||||||
_controller = null;
|
_controller = null;
|
||||||
|
_initialiseEffectiveController();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update _focusNode
|
||||||
|
if (widget.focusNode != null && oldWidget.focusNode != widget.focusNode) {
|
||||||
|
_focusNode.removeListener(_focusNodeListener);
|
||||||
|
_focusNode = widget.focusNode!;
|
||||||
|
_focusNode.addListener(_focusNodeListener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -440,6 +444,13 @@ class MessageInputState extends State<MessageInput>
|
|||||||
int _timeOut = 0;
|
int _timeOut = 0;
|
||||||
Timer? _slowModeTimer;
|
Timer? _slowModeTimer;
|
||||||
|
|
||||||
|
void _initialiseEffectiveController() {
|
||||||
|
_effectiveController.textEditingController
|
||||||
|
.removeListener(_onChangedDebounced);
|
||||||
|
_effectiveController.textEditingController.addListener(_onChangedDebounced);
|
||||||
|
if (!_isEditing && _timeOut <= 0) _startSlowMode();
|
||||||
|
}
|
||||||
|
|
||||||
void _startSlowMode() {
|
void _startSlowMode() {
|
||||||
if (!mounted) {
|
if (!mounted) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user