add editMessageInputBuilder to customize the messageinput while editing messages
This commit is contained in:
@@ -92,7 +92,7 @@ class MessageInput extends StatefulWidget {
|
||||
this.textEditingController,
|
||||
this.actions,
|
||||
this.actionsLocation = ActionsLocation.left,
|
||||
this.attachmentThumbnailBuilder,
|
||||
this.attachmentThumbnailBuilders,
|
||||
}) : super(key: key);
|
||||
|
||||
/// Message to edit
|
||||
@@ -135,8 +135,8 @@ class MessageInput extends StatefulWidget {
|
||||
/// The location of the custom actions
|
||||
final ActionsLocation actionsLocation;
|
||||
|
||||
/// Map that defines a builder for an attachment type
|
||||
final Map<String, AttachmentThumbnailBuilder> attachmentThumbnailBuilder;
|
||||
/// Map that defines a thumbnail builder for an attachment type
|
||||
final Map<String, AttachmentThumbnailBuilder> attachmentThumbnailBuilders;
|
||||
|
||||
@override
|
||||
MessageInputState createState() => MessageInputState();
|
||||
@@ -547,13 +547,10 @@ class MessageInputState extends State<MessageInput> {
|
||||
}
|
||||
|
||||
Widget _buildAttachment(_SendingAttachment attachment) {
|
||||
print('attachment.attachment.toJson(): ${attachment.attachment.toJson()}');
|
||||
print(
|
||||
'widget.attachmentThumbnailBuilder: ${widget.attachmentThumbnailBuilder}');
|
||||
if (widget.attachmentThumbnailBuilder
|
||||
if (widget.attachmentThumbnailBuilders
|
||||
?.containsKey(attachment.attachment.type) ==
|
||||
true) {
|
||||
return widget.attachmentThumbnailBuilder[attachment.attachment.type](
|
||||
return widget.attachmentThumbnailBuilders[attachment.attachment.type](
|
||||
context,
|
||||
attachment,
|
||||
);
|
||||
@@ -897,6 +894,10 @@ class MessageInputState extends State<MessageInput> {
|
||||
return sendingFuture.whenComplete(() {
|
||||
if (widget.onMessageSent != null) {
|
||||
widget.onMessageSent(message);
|
||||
} else {
|
||||
if (widget.editMessage != null) {
|
||||
Navigator.pop(context);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -958,7 +959,6 @@ class MessageInputState extends State<MessageInput> {
|
||||
_messageIsPresent = true;
|
||||
|
||||
message.attachments?.forEach((attachment) {
|
||||
print('attachment: ${attachment.toJson()}');
|
||||
_attachments.add(_SendingAttachment(
|
||||
attachment: attachment,
|
||||
uploaded: true,
|
||||
|
||||
@@ -73,6 +73,7 @@ class MessageListView extends StatefulWidget {
|
||||
this.attachmentBuilders,
|
||||
this.dateDividerBuilder,
|
||||
this.showAvatar = true,
|
||||
this.editMessageInputBuilder,
|
||||
}) : super(key: key);
|
||||
|
||||
/// Function used to build a custom message widget
|
||||
@@ -115,6 +116,9 @@ class MessageListView extends StatefulWidget {
|
||||
/// if true shows the user avatar
|
||||
final bool showAvatar;
|
||||
|
||||
/// Builder used to build the message input to edit a message
|
||||
final Widget Function(BuildContext, Message) editMessageInputBuilder;
|
||||
|
||||
@override
|
||||
_MessageListViewState createState() => _MessageListViewState();
|
||||
}
|
||||
@@ -177,6 +181,7 @@ class _MessageListViewState extends State<MessageListView> {
|
||||
onMessageActions: widget.onMessageActions,
|
||||
attachmentBuilders: widget.attachmentBuilders,
|
||||
showAvatar: widget.showAvatar,
|
||||
editMessageInputBuilder: widget.editMessageInputBuilder,
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 32),
|
||||
@@ -243,6 +248,7 @@ class _MessageListViewState extends State<MessageListView> {
|
||||
onMessageActions: widget.onMessageActions,
|
||||
attachmentBuilders: widget.attachmentBuilders,
|
||||
showAvatar: widget.showAvatar,
|
||||
editMessageInputBuilder: widget.editMessageInputBuilder,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -337,6 +343,7 @@ class _MessageListViewState extends State<MessageListView> {
|
||||
onMessageActions: widget.onMessageActions,
|
||||
attachmentBuilders: widget.attachmentBuilders,
|
||||
showAvatar: widget.showAvatar,
|
||||
editMessageInputBuilder: widget.editMessageInputBuilder,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -379,6 +386,7 @@ class _MessageListViewState extends State<MessageListView> {
|
||||
onMessageActions: widget.onMessageActions,
|
||||
attachmentBuilders: widget.attachmentBuilders,
|
||||
showAvatar: widget.showAvatar,
|
||||
editMessageInputBuilder: widget.editMessageInputBuilder,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+21
-15
@@ -51,6 +51,7 @@ class MessageWidget extends StatefulWidget {
|
||||
this.showVideoFullScreen = true,
|
||||
this.attachmentBuilders,
|
||||
this.showAvatar = true,
|
||||
this.editMessageInputBuilder,
|
||||
}) : super(key: key);
|
||||
|
||||
/// Function called on mention tap
|
||||
@@ -89,6 +90,9 @@ class MessageWidget extends StatefulWidget {
|
||||
/// if true shows the user avatar
|
||||
final bool showAvatar;
|
||||
|
||||
/// Builder used to build the message input to edit a message
|
||||
final Widget Function(BuildContext, Message) editMessageInputBuilder;
|
||||
|
||||
@override
|
||||
_MessageWidgetState createState() => _MessageWidgetState();
|
||||
}
|
||||
@@ -723,21 +727,23 @@ class _MessageWidgetState extends State<MessageWidget>
|
||||
padding: EdgeInsets.only(
|
||||
bottom: MediaQuery.of(context).viewInsets.bottom,
|
||||
),
|
||||
child: MessageInput(
|
||||
editMessage: widget.message,
|
||||
parentMessage: widget.isParent
|
||||
? StreamChannel.of(context)
|
||||
.channel
|
||||
.state
|
||||
.messages
|
||||
.firstWhere((message) =>
|
||||
message.id == widget.message.parentId)
|
||||
: null,
|
||||
onMessageSent: (_) {
|
||||
FocusScope.of(context).unfocus();
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
child: widget.editMessageInputBuilder != null
|
||||
? widget.editMessageInputBuilder(context, widget.message)
|
||||
: MessageInput(
|
||||
editMessage: widget.message,
|
||||
parentMessage: widget.isParent
|
||||
? StreamChannel.of(context)
|
||||
.channel
|
||||
.state
|
||||
.messages
|
||||
.firstWhere((message) =>
|
||||
message.id == widget.message.parentId)
|
||||
: null,
|
||||
onMessageSent: (_) {
|
||||
FocusScope.of(context).unfocus();
|
||||
Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user