diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart b/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart index d8202ecd..61b43e21 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:stream_chat_flutter/src/message_list_view/mlv_utils.dart'; @@ -22,7 +23,7 @@ class FloatingDateDivider extends StatelessWidget { final bool isThreadConversation; // ignore: public_member_api_docs - final ItemPositionsListener itemPositionListener; + final ValueListenable> itemPositionListener; // ignore: public_member_api_docs final bool reverse; @@ -38,9 +39,8 @@ class FloatingDateDivider extends StatelessWidget { @override Widget build(BuildContext context) { - final itemPositions = itemPositionListener.itemPositions; return ValueListenableBuilder( - valueListenable: itemPositions, + valueListenable: itemPositionListener, builder: (context, positions, child) { if (positions.isEmpty || messages.isEmpty) { return const Offstage(); diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart index f1a42cfd..f3ed4084 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart @@ -817,7 +817,7 @@ class _StreamMessageListViewState extends State { child: FloatingDateDivider( itemCount: itemCount, reverse: widget.reverse, - itemPositionListener: _itemPositionListener, + itemPositionListener: _itemPositionListener.itemPositions, messages: messages, dateDividerBuilder: widget.dateDividerBuilder, isThreadConversation: _isThreadConversation, diff --git a/packages/stream_chat_flutter/test/src/message_list_view/floating_date_divider_test.dart b/packages/stream_chat_flutter/test/src/message_list_view/floating_date_divider_test.dart index a6403331..f3d3c365 100644 --- a/packages/stream_chat_flutter/test/src/message_list_view/floating_date_divider_test.dart +++ b/packages/stream_chat_flutter/test/src/message_list_view/floating_date_divider_test.dart @@ -1,11 +1,32 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:stream_chat_flutter/src/message_list_view/floating_date_divider.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import '../mocks.dart'; + void main() { testWidgets('FloatingDateDivider', (tester) async { + final client = MockClient(); + final clientState = MockClientState(); + + when(() => client.state).thenReturn(clientState); + when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); + + final createdAt = DateTime.now(); + + final itemPositionsListener = ValueNotifier( + [ + const ItemPosition( + index: 0, + itemLeadingEdge: 0, + itemTrailingEdge: 0, + ), + ], + ); + await tester.pumpWidget( MaterialApp( home: Scaffold( @@ -14,12 +35,9 @@ void main() { FloatingDateDivider( reverse: false, itemCount: 3, - itemPositionListener: ItemPositionsListener.create(), - messages: [ - Message(), - Message(), - Message(), - ], + itemPositionListener: itemPositionsListener, + messages: [Message(createdAt: createdAt)], + dateDividerBuilder: (dateTime) => Text('$dateTime'), ), ], ), @@ -27,6 +45,6 @@ void main() { ), ); - expect(find.byType(Positioned), findsOneWidget); + expect(find.text('$createdAt'), findsOneWidget); }); }