From e1a9e4d8789527152577adcdf0765d095d397fb2 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 25 Jun 2021 11:30:19 +0200 Subject: [PATCH] use MessageWidget.copyWith in parentMessageBuilder --- .../lib/src/message_list_view.dart | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 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 525f7313..f6c6d60d 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -26,9 +26,12 @@ typedef MessageBuilder = Widget Function( ); /// Widget builder for parent message +/// [defaultMessageWidget] is the default [MessageWidget] configuration +/// Use [defaultMessageWidget.copyWith] to easily customize it typedef ParentMessageBuilder = Widget Function( BuildContext, Message?, + MessageWidget defaultMessageWidget, ); /// Widget builder for system message @@ -69,6 +72,8 @@ class MessageDetails { index - 1 >= 0 && message.user!.id == messages[index - 1].user?.id; } + /// Default [MessageWidget] configuration + /// use [defaultMessageWidget.copyWith] to easily customize it late final MessageWidget defaultMessageWidget; /// True if the message belongs to the current user @@ -548,11 +553,7 @@ class _MessageListViewState extends State { itemBuilder: (context, i) { if (i == itemCount - 1) { if (widget.parentMessage == null) return const Offstage(); - return widget.parentMessageBuilder?.call( - context, - widget.parentMessage, - ) ?? - buildParentMessage(widget.parentMessage!); + return buildParentMessage(widget.parentMessage!); } if (i == itemCount - 2) { @@ -804,7 +805,7 @@ class _MessageListViewState extends State { final currentUserMember = members.firstWhereOrNull((e) => e.user!.id == currentUser!.id); - return MessageWidget( + final defaultMessageWidget = MessageWidget( showReplyMessage: false, showResendMessage: false, showThreadReplyMessage: false, @@ -858,6 +859,16 @@ class _MessageListViewState extends State { showPinButton: currentUserMember != null && widget.pinPermissions.contains(currentUserMember.role), ); + + if (widget.parentMessageBuilder != null) { + return widget.parentMessageBuilder!.call( + context, + widget.parentMessage, + defaultMessageWidget, + ); + } + + return defaultMessageWidget; } Widget buildMessage(