// 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/material/scaffold/scaffold_messenger_state.show_snack_bar.2.dart' as example; import 'package:flutter_test/flutter_test.dart'; void main() { testWidgets( 'ScaffoldMessenger showSnackBar animation can be customized using AnimationStyle', (WidgetTester tester) async { await tester.pumpWidget(const example.SnackBarApp()); // Tap the button to show the SnackBar with default animation style. await tester.tap(find.byType(ElevatedButton)); await tester.pump(); await tester.pump( const Duration(milliseconds: 125), ); // Advance the animation by 125ms. expect( tester.getTopLeft(find.text('I am a snack bar.')).dy, closeTo(576.7, 0.1), ); await tester.pump( const Duration(milliseconds: 125), ); // Advance the animation by 125ms. expect( tester.getTopLeft(find.text('I am a snack bar.')).dy, closeTo(566, 0.1), ); // Tap the close button to dismiss the SnackBar. await tester.tap(find.byType(IconButton)); await tester.pump(); await tester.pump( const Duration(milliseconds: 250), ); // Advance the animation by 250ms. expect( tester.getTopLeft(find.text('I am a snack bar.')).dy, closeTo(614, 0.1), ); // Select custom animation style. await tester.tap(find.text('Custom')); await tester.pumpAndSettle(); // Tap the button to show the SnackBar with custom animation style. await tester.tap(find.byType(ElevatedButton)); await tester.pump(); await tester.pump( const Duration(milliseconds: 1500), ); // Advance the animation by 125ms. expect( tester.getTopLeft(find.text('I am a snack bar.')).dy, closeTo(576.7, 0.1), ); await tester.pump( const Duration(milliseconds: 1500), ); // Advance the animation by 125ms. expect( tester.getTopLeft(find.text('I am a snack bar.')).dy, closeTo(566, 0.1), ); // Tap the close button to dismiss the SnackBar. await tester.tap(find.byType(IconButton)); await tester.pump(); await tester.pump( const Duration(seconds: 1), ); // Advance the animation by 1sec. expect( tester.getTopLeft(find.text('I am a snack bar.')).dy, closeTo(614, 0.1), ); // Select no animation style. await tester.tap(find.text('None')); await tester.pumpAndSettle(); // Tap the button to show the SnackBar with no animation style. await tester.tap(find.byType(ElevatedButton)); await tester.pump(); expect( tester.getTopLeft(find.text('I am a snack bar.')).dy, closeTo(566, 0.1), ); // Tap the close button to dismiss the SnackBar. await tester.tap(find.byType(IconButton)); await tester.pump(); expect(find.text('I am a snack bar.'), findsNothing); }, ); }