From 85df3397d7948540e5d2ff392dd71c5317a8670a Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 2 Mar 2021 12:11:08 +0100 Subject: [PATCH] expose systemMessageBuilder in messagelistview --- .../lib/src/message_list_view.dart | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 505c4e0f..18675846 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -28,6 +28,10 @@ typedef ParentMessageBuilder = Widget Function( BuildContext, Message, ); +typedef SystemMessageBuilder = Widget Function( + BuildContext, + Message, +); typedef ThreadBuilder = Widget Function(BuildContext context, Message parent); typedef ThreadTapCallback = void Function(Message, Widget); @@ -128,6 +132,7 @@ class MessageListView extends StatefulWidget { this.showConnectionStateTile = false, this.loadingBuilder, this.emptyBuilder, + this.systemMessageBuilder, this.messageListBuilder, this.errorWidgetBuilder, this.customAttachmentBuilders, @@ -136,6 +141,9 @@ class MessageListView extends StatefulWidget { /// Function used to build a custom message widget final MessageBuilder messageBuilder; + /// Function used to build a custom system message widget + final SystemMessageBuilder systemMessageBuilder; + /// Function used to build a custom parent message widget final ParentMessageBuilder parentMessageBuilder; @@ -813,10 +821,11 @@ class _MessageListViewState extends State { int index, ) { if (message.type == 'system' && message.text?.isNotEmpty == true) { - return SystemMessage( - key: ValueKey('MESSAGE-${message.id}'), - message: message, - ); + return widget.systemMessageBuilder?.call(context, message) ?? + SystemMessage( + key: ValueKey('MESSAGE-${message.id}'), + message: message, + ); } final userId = StreamChat.of(context).user.id;