This commit is contained in:
Deven Joshi
2022-01-13 17:30:36 +05:30
parent c32311eca3
commit bbfdb655e6
@@ -490,119 +490,118 @@ class MessageInputState extends State<MessageInput>
); );
} }
return MessageValueListenableBuilder( return MessageValueListenableBuilder(
valueListenable: _effectiveController, valueListenable: _effectiveController,
builder: (context, value, _) { builder: (context, value, _) {
Widget child = DecoratedBox( Widget child = DecoratedBox(
decoration: BoxDecoration( decoration: BoxDecoration(
color: _messageInputTheme.inputBackgroundColor, color: _messageInputTheme.inputBackgroundColor,
), ),
child: SafeArea( child: SafeArea(
child: GestureDetector( child: GestureDetector(
onPanUpdate: (details) { onPanUpdate: (details) {
if (details.delta.dy > 0) { if (details.delta.dy > 0) {
_focusNode.unfocus(); _focusNode.unfocus();
if (_openFilePickerSection) { if (_openFilePickerSection) {
setState(() { setState(() {
_openFilePickerSection = false; _openFilePickerSection = false;
}); });
}
} }
}, }
child: Column( },
mainAxisSize: MainAxisSize.min, child: Column(
children: [ mainAxisSize: MainAxisSize.min,
if (_hasQuotedMessage) children: [
Padding( if (_hasQuotedMessage)
padding: const EdgeInsets.fromLTRB(8, 8, 8, 0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Padding(
padding: const EdgeInsets.all(8),
child: StreamSvgIcon.reply(
color: _streamChatTheme.colorTheme.disabled,
),
),
Text(
context.translations.replyToMessageLabel,
style:
const TextStyle(fontWeight: FontWeight.bold),
),
IconButton(
visualDensity: VisualDensity.compact,
icon: StreamSvgIcon.closeSmall(),
onPressed: () {
_effectiveController.clearQuotedMessage();
_focusNode.unfocus();
},
),
],
),
)
else if (_effectiveController.ogAttachment != null)
OGAttachmentPreview(
attachment: _effectiveController.ogAttachment!,
onDismissPreviewPressed: () {
_effectiveController.clearOGAttachment();
_focusNode.unfocus();
},
),
Padding( Padding(
padding: const EdgeInsets.symmetric(vertical: 8), padding: const EdgeInsets.fromLTRB(8, 8, 8, 0),
child: _buildTextField(context), child: Row(
), mainAxisAlignment: MainAxisAlignment.spaceBetween,
if (_effectiveController.value.parentId != null && children: [
!widget.hideSendAsDm) Padding(
Padding( padding: const EdgeInsets.all(8),
padding: const EdgeInsets.only( child: StreamSvgIcon.reply(
right: 12, color: _streamChatTheme.colorTheme.disabled,
left: 12, ),
bottom: 12, ),
), Text(
child: _buildDmCheckbox(), context.translations.replyToMessageLabel,
style: const TextStyle(fontWeight: FontWeight.bold),
),
IconButton(
visualDensity: VisualDensity.compact,
icon: StreamSvgIcon.closeSmall(),
onPressed: () {
_effectiveController.clearQuotedMessage();
_focusNode.unfocus();
},
),
],
), ),
_buildFilePickerSection(), )
], else if (_effectiveController.ogAttachment != null)
), OGAttachmentPreview(
attachment: _effectiveController.ogAttachment!,
onDismissPreviewPressed: () {
_effectiveController.clearOGAttachment();
_focusNode.unfocus();
},
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: _buildTextField(context),
),
if (_effectiveController.value.parentId != null &&
!widget.hideSendAsDm)
Padding(
padding: const EdgeInsets.only(
right: 12,
left: 12,
bottom: 12,
),
child: _buildDmCheckbox(),
),
_buildFilePickerSection(),
],
), ),
), ),
); ),
if (!_isEditing) { );
child = Material( if (!_isEditing) {
elevation: 8, child = Material(
child: child, elevation: 8,
);
}
return MultiOverlay(
childAnchor: Alignment.topCenter,
overlayAnchor: Alignment.bottomCenter,
overlayOptions: [
OverlayOptions(
visible: _showCommandsOverlay,
widget: _buildCommandsOverlayEntry(),
),
OverlayOptions(
visible: _focusNode.hasFocus &&
_effectiveController.text.isNotEmpty &&
_effectiveController.baseOffset > 0 &&
_effectiveController.text
.substring(
0,
_effectiveController.baseOffset,
)
.contains(':'),
widget: _buildEmojiOverlay(),
),
OverlayOptions(
visible: _showMentionsOverlay,
widget: _buildMentionsOverlayEntry(),
),
...widget.customOverlays,
],
child: child, child: child,
); );
}, }
); return MultiOverlay(
childAnchor: Alignment.topCenter,
overlayAnchor: Alignment.bottomCenter,
overlayOptions: [
OverlayOptions(
visible: _showCommandsOverlay,
widget: _buildCommandsOverlayEntry(),
),
OverlayOptions(
visible: _focusNode.hasFocus &&
_effectiveController.text.isNotEmpty &&
_effectiveController.baseOffset > 0 &&
_effectiveController.text
.substring(
0,
_effectiveController.baseOffset,
)
.contains(':'),
widget: _buildEmojiOverlay(),
),
OverlayOptions(
visible: _showMentionsOverlay,
widget: _buildMentionsOverlayEntry(),
),
...widget.customOverlays,
],
child: child,
);
},
);
} }
Flex _buildTextField(BuildContext context) => Flex( Flex _buildTextField(BuildContext context) => Flex(