Skip to content

Commit 4741cdd

Browse files
committed
scroll test [nfc]: Share a controller variable in MessageListScrollView tests
This will be convenient for testing scrollToEnd.
1 parent 76c7b21 commit 4741cdd

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

test/widgets/scrolling_test.dart

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,12 @@ void main() {
129129

130130
group('MessageListScrollView', () {
131131
Widget buildList({
132-
MessageListScrollController? controller,
132+
required MessageListScrollController controller,
133133
required double topHeight,
134134
required double bottomHeight,
135135
}) {
136136
return MessageListScrollView(
137-
controller: controller ?? MessageListScrollController(),
137+
controller: controller,
138138
center: const ValueKey('center'),
139139
slivers: [
140140
SliverToBoxAdapter(
@@ -144,11 +144,16 @@ void main() {
144144
]);
145145
}
146146

147+
late MessageListScrollController controller;
148+
147149
Future<void> prepare(WidgetTester tester, {
148-
MessageListScrollController? controller,
150+
bool reuseController = false,
149151
required double topHeight,
150152
required double bottomHeight,
151153
}) async {
154+
if (!reuseController) {
155+
controller = MessageListScrollController();
156+
}
152157
await tester.pumpWidget(Directionality(textDirection: TextDirection.ltr,
153158
child: buildList(controller: controller,
154159
topHeight: topHeight, bottomHeight: bottomHeight)));
@@ -244,20 +249,18 @@ void main() {
244249
});
245250

246251
testWidgets('stick to end of list when it grows', (tester) async {
247-
final controller = MessageListScrollController();
248-
await prepare(tester, controller: controller,
252+
await prepare(tester,
249253
topHeight: 400, bottomHeight: 400);
250254
check(tester.getRect(findBottom))..top.equals(200)..bottom.equals(600);
251255

252256
// Bottom sliver grows; remain scrolled to (new) bottom.
253-
await prepare(tester, controller: controller,
257+
await prepare(tester, reuseController: true,
254258
topHeight: 400, bottomHeight: 500);
255259
check(tester.getRect(findBottom))..top.equals(100)..bottom.equals(600);
256260
});
257261

258262
testWidgets('when not at end, let it grow without following', (tester) async {
259-
final controller = MessageListScrollController();
260-
await prepare(tester, controller: controller,
263+
await prepare(tester,
261264
topHeight: 400, bottomHeight: 400);
262265
check(tester.getRect(findBottom))..top.equals(200)..bottom.equals(600);
263266

@@ -267,7 +270,7 @@ void main() {
267270
check(tester.getRect(findBottom))..top.equals(300)..bottom.equals(700);
268271

269272
// Bottom sliver grows; remain at existing position, now farther from end.
270-
await prepare(tester, controller: controller,
273+
await prepare(tester, reuseController: true,
271274
topHeight: 400, bottomHeight: 500);
272275
check(tester.getRect(findBottom))..top.equals(300)..bottom.equals(800);
273276
});

0 commit comments

Comments
 (0)