use MessageWidget.copyWith in parentMessageBuilder
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user