From 0f5207781da19366557d1298946416c4eeaaf0ea Mon Sep 17 00:00:00 2001 From: Georgiy Voloshin Date: Mon, 2 Sep 2024 12:18:57 +0300 Subject: [PATCH 1/3] Add new custom unreadHeaderDate builder --- lib/src/widgets/chat.dart | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/src/widgets/chat.dart b/lib/src/widgets/chat.dart index 6c96a30d..fff2299f 100644 --- a/lib/src/widgets/chat.dart +++ b/lib/src/widgets/chat.dart @@ -104,6 +104,7 @@ class Chat extends StatefulWidget { this.slidableMessageBuilder, this.isLeftStatus = false, this.messageWidthRatio = 0.72, + this.unreadHeaderDataBuilder, }); /// See [Message.audioMessageBuilder]. @@ -143,6 +144,9 @@ class Chat extends StatefulWidget { /// Custom date header builder gives ability to customize date header widget. final Widget Function(DateHeader)? dateHeaderBuilder; +// Custom unreadHeaderData spacer builder gives ability to customize header for unread messages. + final Widget Function(UnreadHeaderData)? unreadHeaderDataBuilder; + /// Time (in ms) between two messages when we will render a date header. /// Default value is 15 minutes, 900000 ms. When time between two messages /// is higher than this threshold, date header will be rendered. Also, @@ -457,11 +461,11 @@ class ChatState extends State { height: object.height, ); } else if (object is UnreadHeaderData) { - return AutoScrollTag( + return widget.unreadHeaderDataBuilder?.call(object) ?? AutoScrollTag( controller: _scrollController, index: index ?? -1, key: const Key('unread_header'), - child: UnreadHeader( + child: UnreadHeader( marginTop: object.marginTop, ), ); @@ -599,7 +603,7 @@ class ChatState extends State { lastReadMessageId: widget.scrollToUnreadOptions.lastReadMessageId, showUserNames: widget.showUserNames, timeFormat: widget.timeFormat, - messagesSpacerHeight: widget.messagesSpacerHeight, + ); _chatMessages = result[0] as List; From 7bd1c2743e0007d8d6424e50755baaaa08263e43 Mon Sep 17 00:00:00 2001 From: Georgiy Voloshin Date: Mon, 2 Sep 2024 12:37:07 +0300 Subject: [PATCH 2/3] small fixes for spacer builder --- lib/src/widgets/chat.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/src/widgets/chat.dart b/lib/src/widgets/chat.dart index fff2299f..c8fb0f31 100644 --- a/lib/src/widgets/chat.dart +++ b/lib/src/widgets/chat.dart @@ -144,7 +144,7 @@ class Chat extends StatefulWidget { /// Custom date header builder gives ability to customize date header widget. final Widget Function(DateHeader)? dateHeaderBuilder; -// Custom unreadHeaderData spacer builder gives ability to customize header for unread messages. +// Custom unread header data builder gives ability to customize header for unread messages. final Widget Function(UnreadHeaderData)? unreadHeaderDataBuilder; /// Time (in ms) between two messages when we will render a date header. @@ -603,7 +603,7 @@ class ChatState extends State { lastReadMessageId: widget.scrollToUnreadOptions.lastReadMessageId, showUserNames: widget.showUserNames, timeFormat: widget.timeFormat, - + messagesSpacerHeight: widget.messagesSpacerHeight, ); _chatMessages = result[0] as List; From 18a4e8f303ab948e1756b68236a9d149fceae892 Mon Sep 17 00:00:00 2001 From: Georgiy Voloshin Date: Mon, 2 Sep 2024 13:04:32 +0300 Subject: [PATCH 3/3] small fix with dart format --- lib/src/widgets/chat.dart | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/src/widgets/chat.dart b/lib/src/widgets/chat.dart index c8fb0f31..e4883cdd 100644 --- a/lib/src/widgets/chat.dart +++ b/lib/src/widgets/chat.dart @@ -461,14 +461,15 @@ class ChatState extends State { height: object.height, ); } else if (object is UnreadHeaderData) { - return widget.unreadHeaderDataBuilder?.call(object) ?? AutoScrollTag( - controller: _scrollController, - index: index ?? -1, - key: const Key('unread_header'), - child: UnreadHeader( - marginTop: object.marginTop, - ), - ); + return widget.unreadHeaderDataBuilder?.call(object) ?? + AutoScrollTag( + controller: _scrollController, + index: index ?? -1, + key: const Key('unread_header'), + child: UnreadHeader( + marginTop: object.marginTop, + ), + ); } else { final map = object as Map; final message = map['message']! as types.Message;