diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index 94b4a9c3bb2..8230a743961 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -477,7 +477,6 @@ final Set _knownMissingTests = { 'examples/api/test/widgets/implicit_animations/animated_positioned.0_test.dart', 'examples/api/test/widgets/implicit_animations/animated_padding.0_test.dart', 'examples/api/test/widgets/implicit_animations/sliver_animated_opacity.0_test.dart', - 'examples/api/test/widgets/dismissible/dismissible.0_test.dart', 'examples/api/test/widgets/scroll_view/custom_scroll_view.1_test.dart', 'examples/api/test/widgets/inherited_notifier/inherited_notifier.0_test.dart', 'examples/api/test/animation/curves/curve2_d.0_test.dart', diff --git a/examples/api/test/widgets/dismissible/dismissible.0_test.dart b/examples/api/test/widgets/dismissible/dismissible.0_test.dart new file mode 100644 index 00000000000..9dcb8096776 --- /dev/null +++ b/examples/api/test/widgets/dismissible/dismissible.0_test.dart @@ -0,0 +1,81 @@ +// 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/dismissible/dismissible.0.dart' + as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + Future dismissHorizontally({ + required WidgetTester tester, + required Finder finder, + required AxisDirection direction, + }) async { + final double width = (tester.renderObject(finder) as RenderBox).size.width; + final double dx = width * 0.8; + + final Offset offset = switch (direction) { + AxisDirection.left => Offset(-dx, 0.0), + AxisDirection.right => Offset(dx, 0.0), + _ => throw ArgumentError('$direction is not supported'), + }; + + await tester.drag(finder, offset); + } + + testWidgets( + 'ListTiles can be dismissed from right to left', + (WidgetTester tester) async { + await tester.pumpWidget( + const example.DismissibleExampleApp(), + ); + + for (final int index in [0, 33, 66, 99]) { + final ValueKey key = ValueKey(index); + + await tester.scrollUntilVisible(find.byKey(key), 100); + + expect(find.byKey(key), findsOneWidget); + + await dismissHorizontally( + tester: tester, + finder: find.byKey(key), + direction: AxisDirection.left, + ); + + await tester.pumpAndSettle(); + + expect(find.byKey(key), findsNothing); + } + }, + ); + + testWidgets( + 'ListTiles can be dismissed from left to right', + (WidgetTester tester) async { + await tester.pumpWidget( + const example.DismissibleExampleApp(), + ); + + for (final int index in [0, 33, 66, 99]) { + final ValueKey key = ValueKey(index); + + await tester.scrollUntilVisible(find.byKey(key), 100); + + expect(find.byKey(key), findsOneWidget); + + await dismissHorizontally( + tester: tester, + finder: find.byKey(key), + direction: AxisDirection.right, + ); + + await tester.pumpAndSettle(); + + expect(find.byKey(key), findsNothing); + } + }, + ); +}