expose systemMessageBuilder in messagelistview

This commit is contained in:
Salvatore Giordano
2021-03-02 12:11:08 +01:00
parent 2709bded70
commit 85df3397d7
@@ -28,6 +28,10 @@ typedef ParentMessageBuilder = Widget Function(
BuildContext, BuildContext,
Message, Message,
); );
typedef SystemMessageBuilder = Widget Function(
BuildContext,
Message,
);
typedef ThreadBuilder = Widget Function(BuildContext context, Message parent); typedef ThreadBuilder = Widget Function(BuildContext context, Message parent);
typedef ThreadTapCallback = void Function(Message, Widget); typedef ThreadTapCallback = void Function(Message, Widget);
@@ -128,6 +132,7 @@ class MessageListView extends StatefulWidget {
this.showConnectionStateTile = false, this.showConnectionStateTile = false,
this.loadingBuilder, this.loadingBuilder,
this.emptyBuilder, this.emptyBuilder,
this.systemMessageBuilder,
this.messageListBuilder, this.messageListBuilder,
this.errorWidgetBuilder, this.errorWidgetBuilder,
this.customAttachmentBuilders, this.customAttachmentBuilders,
@@ -136,6 +141,9 @@ class MessageListView extends StatefulWidget {
/// Function used to build a custom message widget /// Function used to build a custom message widget
final MessageBuilder messageBuilder; final MessageBuilder messageBuilder;
/// Function used to build a custom system message widget
final SystemMessageBuilder systemMessageBuilder;
/// Function used to build a custom parent message widget /// Function used to build a custom parent message widget
final ParentMessageBuilder parentMessageBuilder; final ParentMessageBuilder parentMessageBuilder;
@@ -813,10 +821,11 @@ class _MessageListViewState extends State<MessageListView> {
int index, int index,
) { ) {
if (message.type == 'system' && message.text?.isNotEmpty == true) { if (message.type == 'system' && message.text?.isNotEmpty == true) {
return SystemMessage( return widget.systemMessageBuilder?.call(context, message) ??
key: ValueKey<String>('MESSAGE-${message.id}'), SystemMessage(
message: message, key: ValueKey<String>('MESSAGE-${message.id}'),
); message: message,
);
} }
final userId = StreamChat.of(context).user.id; final userId = StreamChat.of(context).user.id;