From 5c09bf21109ffc574ed96f573743345efcb661d4 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Wed, 3 Nov 2021 14:09:51 +0530 Subject: [PATCH] added new builder --- .../lib/src/message_input.dart | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 596e61c4..556a5ac1 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -79,9 +79,11 @@ typedef ActionButtonBuilder = Widget Function( IconButton defaultActionButton, ); -typedef AttachmentsPickerBuilder = Widget Function( +/// Widget builder for widgets that require may required data from the +/// [MessageInputController] +typedef MessageRelatedBuilder = Widget Function( BuildContext context, - List attachments, + MessageInputController messageInputController, ); /// Location for actions on the [MessageInput] @@ -210,6 +212,7 @@ class MessageInput extends StatefulWidget { this.customOverlays = const [], this.mentionAllAppUsers = false, this.attachmentsPickerBuilder, + this.sendButtonBuilder, }) : assert( initialMessage == null || editMessage == null, "Can't provide both `initialMessage` and `editMessage`", @@ -329,7 +332,10 @@ class MessageInput extends StatefulWidget { final bool mentionAllAppUsers; /// Builds bottom sheet when attachment picker is opened. - final AttachmentsPickerBuilder? attachmentsPickerBuilder; + final MessageRelatedBuilder? attachmentsPickerBuilder; + + /// Builder for creating send button + final MessageRelatedBuilder? sendButtonBuilder; @override MessageInputState createState() => MessageInputState(); @@ -597,15 +603,20 @@ class MessageInputState extends State { ], ); - Widget _buildSendButton(BuildContext context) => StreamMessageSendButton( - onSendMessage: sendMessage, - timeOut: _timeOut, - isIdle: - !_messageIsPresent && messageInputController.attachments.isEmpty, - isEditEnabled: widget.editMessage != null, - idleSendButton: widget.idleSendButton, - activeSendButton: widget.activeSendButton, - ); + Widget _buildSendButton(BuildContext context) { + if (widget.sendButtonBuilder != null) { + return widget.sendButtonBuilder!(context, messageInputController); + } + + return StreamMessageSendButton( + onSendMessage: sendMessage, + timeOut: _timeOut, + isIdle: !_messageIsPresent && messageInputController.attachments.isEmpty, + isEditEnabled: widget.editMessage != null, + idleSendButton: widget.idleSendButton, + activeSendButton: widget.activeSendButton, + ); + } Widget _buildExpandActionsButton(BuildContext context) { final channel = StreamChannel.of(context).channel; @@ -993,7 +1004,7 @@ class MessageInputState extends State { if (_openFilePickerSection && widget.attachmentsPickerBuilder != null) { return widget.attachmentsPickerBuilder!( context, - messageInputController.attachments, + messageInputController, ); }