use MessageWidget.copyWith in parentMessageBuilder

This commit is contained in:
Salvatore Giordano
2021-06-25 11:30:19 +02:00
parent 8b71b32bdb
commit e1a9e4d878
@@ -26,9 +26,12 @@ typedef MessageBuilder = Widget Function(
); );
/// Widget builder for parent message /// Widget builder for parent message
/// [defaultMessageWidget] is the default [MessageWidget] configuration
/// Use [defaultMessageWidget.copyWith] to easily customize it
typedef ParentMessageBuilder = Widget Function( typedef ParentMessageBuilder = Widget Function(
BuildContext, BuildContext,
Message?, Message?,
MessageWidget defaultMessageWidget,
); );
/// Widget builder for system message /// Widget builder for system message
@@ -69,6 +72,8 @@ class MessageDetails {
index - 1 >= 0 && message.user!.id == messages[index - 1].user?.id; 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; late final MessageWidget defaultMessageWidget;
/// True if the message belongs to the current user /// True if the message belongs to the current user
@@ -548,11 +553,7 @@ class _MessageListViewState extends State<MessageListView> {
itemBuilder: (context, i) { itemBuilder: (context, i) {
if (i == itemCount - 1) { if (i == itemCount - 1) {
if (widget.parentMessage == null) return const Offstage(); if (widget.parentMessage == null) return const Offstage();
return widget.parentMessageBuilder?.call( return buildParentMessage(widget.parentMessage!);
context,
widget.parentMessage,
) ??
buildParentMessage(widget.parentMessage!);
} }
if (i == itemCount - 2) { if (i == itemCount - 2) {
@@ -804,7 +805,7 @@ class _MessageListViewState extends State<MessageListView> {
final currentUserMember = final currentUserMember =
members.firstWhereOrNull((e) => e.user!.id == currentUser!.id); members.firstWhereOrNull((e) => e.user!.id == currentUser!.id);
return MessageWidget( final defaultMessageWidget = MessageWidget(
showReplyMessage: false, showReplyMessage: false,
showResendMessage: false, showResendMessage: false,
showThreadReplyMessage: false, showThreadReplyMessage: false,
@@ -858,6 +859,16 @@ class _MessageListViewState extends State<MessageListView> {
showPinButton: currentUserMember != null && showPinButton: currentUserMember != null &&
widget.pinPermissions.contains(currentUserMember.role), widget.pinPermissions.contains(currentUserMember.role),
); );
if (widget.parentMessageBuilder != null) {
return widget.parentMessageBuilder!.call(
context,
widget.parentMessage,
defaultMessageWidget,
);
}
return defaultMessageWidget;
} }
Widget buildMessage( Widget buildMessage(