add editMessageInputBuilder to customize the messageinput while editing messages

This commit is contained in:
Salvatore Giordano
2020-04-30 11:17:44 +02:00
parent ec57d91530
commit cb09f0d09e
3 changed files with 38 additions and 24 deletions
+9 -9
View File
@@ -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,
+8
View File
@@ -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
View File
@@ -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);
},
),
),
],
),