// 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); } }); }