flutter/examples/api/test/widgets/page_view/page_view.1_test.dart
Gildásio Filho 492b6f7ddf
Add findChildIndexCallback examples (#133469)
The documentation for using `findChildIndexCallback` recommends using `indexOf`, but that causes [this line](05259ca938/packages/flutter/lib/src/rendering/sliver_multi_box_adaptor.dart (L259)) to throw in debug mode, and when using `SliverList`, it breaks the render.

This PR changes the usage to check if the index is not negative before using it, and changes to return `null` instead if the child wasn't able to be found.

There's the related issue #107123, but this doesn't actually fix it.

-----

This PR has been updated to add the snippets that were used in the `findChildIndexCallback` comment as examples with proper tests, as well as updating the comment to reference the new examples.
2023-10-18 00:26:17 +00:00

30 lines
1.1 KiB
Dart

// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:flutter_api_samples/widgets/page_view/page_view.1.dart'
as example;
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets(
'tapping Reverse button should reverse PageView',
(WidgetTester tester) async {
await tester.pumpWidget(const example.PageViewExampleApp());
final Finder pageView = find.byType(PageView);
final Finder reverseFinder = find.text('Reverse items');
final Finder firstItemFinder = find.byKey(const ValueKey<String>('1'));
final Finder lastItemFinder = find.byKey(const ValueKey<String>('5'));
expect(pageView, findsOneWidget);
expect(reverseFinder, findsOneWidget);
expect(firstItemFinder, findsOneWidget);
expect(lastItemFinder, findsNothing);
await tester.tap(reverseFinder);
await tester.pump();
expect(firstItemFinder, findsNothing);
expect(lastItemFinder, findsOneWidget);
},
);
}