diff --git a/packages/stream_chat_flutter/lib/src/components/message_composer/message_composer_leading.dart b/packages/stream_chat_flutter/lib/src/components/message_composer/message_composer_leading.dart index 942100e1c..26114de38 100644 --- a/packages/stream_chat_flutter/lib/src/components/message_composer/message_composer_leading.dart +++ b/packages/stream_chat_flutter/lib/src/components/message_composer/message_composer_leading.dart @@ -32,17 +32,18 @@ class _DefaultStreamMessageComposerLeading extends StatelessWidget { Widget build(BuildContext context) { // 45 degrees = 0.125 turns const closedRotation = 0.125; + final showButton = !props.isAudioRecordingFlowActive && props.controller.message.command == null; return AnimatedOpacity( - opacity: props.isAudioRecordingFlowActive ? 0.0 : 1.0, - duration: props.isAudioRecordingFlowActive ? Duration.zero : const Duration(milliseconds: 200), + opacity: showButton ? 1.0 : 0.0, + duration: showButton ? const Duration(milliseconds: 200) : Duration.zero, curve: Curves.easeInQuint, child: AnimatedSize( duration: const Duration(milliseconds: 200), alignment: Alignment.bottomCenter, child: Row( children: [ - if (!props.isAudioRecordingFlowActive) ...[ + if (showButton) ...[ AnimatedRotation( turns: props.isPickerOpen ? closedRotation : 0, duration: const Duration(milliseconds: 150), diff --git a/packages/stream_chat_flutter/lib/src/components/message_composer/stream_chat_message_composer.dart b/packages/stream_chat_flutter/lib/src/components/message_composer/stream_chat_message_composer.dart index 00eb5cb53..cb976d2df 100644 --- a/packages/stream_chat_flutter/lib/src/components/message_composer/stream_chat_message_composer.dart +++ b/packages/stream_chat_flutter/lib/src/components/message_composer/stream_chat_message_composer.dart @@ -307,6 +307,8 @@ class DefaultStreamChatMessageComposer extends StatelessWidget { controller: inputController.textFieldController, placeholder: props.placeholder, focusNode: props.focusNode, + command: inputController.message.command?.toUpperCase(), + onDismissCommand: inputController.clear, ), if (props.canAlsoSendToChannel) DmCheckboxListTile( diff --git a/packages/stream_chat_flutter_core/lib/src/stream_message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/stream_message_input_controller.dart index a9b121914..78576690d 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_message_input_controller.dart @@ -182,7 +182,7 @@ class StreamMessageInputController extends ValueNotifier { } /// Sets a command for the message. - set command(String command) { + set command(String? command) { // Setting the command should also clear the text and attachments. message = message.copyWith( text: '',