@@ -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<Iterable<ItemPosition>> 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();
|
||||
|
||||
@@ -817,7 +817,7 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
|
||||
child: FloatingDateDivider(
|
||||
itemCount: itemCount,
|
||||
reverse: widget.reverse,
|
||||
itemPositionListener: _itemPositionListener,
|
||||
itemPositionListener: _itemPositionListener.itemPositions,
|
||||
messages: messages,
|
||||
dateDividerBuilder: widget.dateDividerBuilder,
|
||||
isThreadConversation: _isThreadConversation,
|
||||
|
||||
+25
-7
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user