@@ -95,6 +95,7 @@ class StreamMessageListView extends StatefulWidget {
9595 this .threadBuilder,
9696 this .onThreadTap,
9797 this .dateDividerBuilder,
98+ this .floatingDateDividerBuilder,
9899 // we need to use ClampingScrollPhysics to avoid the list view to bounce
99100 // when we are at the either end of the list view and try to use 'animateTo'
100101 // to animate in the same direction.
@@ -241,6 +242,12 @@ class StreamMessageListView extends StatefulWidget {
241242 /// Builder used to render date dividers
242243 final Widget Function (DateTime )? dateDividerBuilder;
243244
245+ /// Builder used to render floating date divider that stays on top while scrolling
246+ /// the message list.
247+ ///
248+ /// If null, It will fall back to [dateDividerBuilder] if provided.
249+ final Widget Function (DateTime )? floatingDateDividerBuilder;
250+
244251 /// Index of an item to initially align within the viewport.
245252 final int ? initialScrollIndex;
246253
@@ -852,7 +859,10 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
852859 reverse: widget.reverse,
853860 itemPositionListener: _itemPositionListener.itemPositions,
854861 messages: messages,
855- dateDividerBuilder: widget.dateDividerBuilder,
862+ dateDividerBuilder: switch (widget.floatingDateDividerBuilder) {
863+ final builder? => builder,
864+ _ => widget.dateDividerBuilder,
865+ },
856866 ),
857867 ),
858868 if (widget.showScrollToBottom)
0 commit comments