@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.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';
|
import 'package:stream_chat_flutter/src/message_list_view/mlv_utils.dart';
|
||||||
@@ -22,7 +23,7 @@ class FloatingDateDivider extends StatelessWidget {
|
|||||||
final bool isThreadConversation;
|
final bool isThreadConversation;
|
||||||
|
|
||||||
// ignore: public_member_api_docs
|
// ignore: public_member_api_docs
|
||||||
final ItemPositionsListener itemPositionListener;
|
final ValueListenable<Iterable<ItemPosition>> itemPositionListener;
|
||||||
|
|
||||||
// ignore: public_member_api_docs
|
// ignore: public_member_api_docs
|
||||||
final bool reverse;
|
final bool reverse;
|
||||||
@@ -38,9 +39,8 @@ class FloatingDateDivider extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final itemPositions = itemPositionListener.itemPositions;
|
|
||||||
return ValueListenableBuilder(
|
return ValueListenableBuilder(
|
||||||
valueListenable: itemPositions,
|
valueListenable: itemPositionListener,
|
||||||
builder: (context, positions, child) {
|
builder: (context, positions, child) {
|
||||||
if (positions.isEmpty || messages.isEmpty) {
|
if (positions.isEmpty || messages.isEmpty) {
|
||||||
return const Offstage();
|
return const Offstage();
|
||||||
|
|||||||
@@ -817,7 +817,7 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
|
|||||||
child: FloatingDateDivider(
|
child: FloatingDateDivider(
|
||||||
itemCount: itemCount,
|
itemCount: itemCount,
|
||||||
reverse: widget.reverse,
|
reverse: widget.reverse,
|
||||||
itemPositionListener: _itemPositionListener,
|
itemPositionListener: _itemPositionListener.itemPositions,
|
||||||
messages: messages,
|
messages: messages,
|
||||||
dateDividerBuilder: widget.dateDividerBuilder,
|
dateDividerBuilder: widget.dateDividerBuilder,
|
||||||
isThreadConversation: _isThreadConversation,
|
isThreadConversation: _isThreadConversation,
|
||||||
|
|||||||
+25
-7
@@ -1,11 +1,32 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.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/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/src/message_list_view/floating_date_divider.dart';
|
||||||
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
||||||
|
|
||||||
|
import '../mocks.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('FloatingDateDivider', (tester) async {
|
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(
|
await tester.pumpWidget(
|
||||||
MaterialApp(
|
MaterialApp(
|
||||||
home: Scaffold(
|
home: Scaffold(
|
||||||
@@ -14,12 +35,9 @@ void main() {
|
|||||||
FloatingDateDivider(
|
FloatingDateDivider(
|
||||||
reverse: false,
|
reverse: false,
|
||||||
itemCount: 3,
|
itemCount: 3,
|
||||||
itemPositionListener: ItemPositionsListener.create(),
|
itemPositionListener: itemPositionsListener,
|
||||||
messages: [
|
messages: [Message(createdAt: createdAt)],
|
||||||
Message(),
|
dateDividerBuilder: (dateTime) => Text('$dateTime'),
|
||||||
Message(),
|
|
||||||
Message(),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -27,6 +45,6 @@ void main() {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(find.byType(Positioned), findsOneWidget);
|
expect(find.text('$createdAt'), findsOneWidget);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user