// 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/snack_bar/snack_bar.1.dart' as example; import 'package:flutter_test/flutter_test.dart'; void main() { testWidgets('Tapping on button shows snackbar', (WidgetTester tester) async { await tester.pumpWidget(const example.SnackBarExampleApp()); expect(find.byType(SnackBar), findsNothing); expect(find.widgetWithText(AppBar, 'SnackBar Sample'), findsOneWidget); await tester.tap(find.widgetWithText(ElevatedButton, 'Show Snackbar')); await tester.pump(); expect(find.text('Awesome SnackBar!'), findsOneWidget); expect(find.widgetWithText(SnackBarAction, 'Action'), findsOneWidget); final SnackBar bar = tester.widget( find.ancestor(of: find.text('Awesome SnackBar!'), matching: find.byType(SnackBar)), ); expect(bar.behavior, SnackBarBehavior.floating); }); testWidgets('Snackbar is styled correctly', (WidgetTester tester) async { await tester.pumpWidget(const example.SnackBarExampleApp()); await tester.tap(find.byType(ElevatedButton)); await tester.pump(); expect(find.byType(SnackBar), findsOneWidget); final SnackBar bar = tester.widget(find.byType(SnackBar)); expect(bar.behavior, SnackBarBehavior.floating); expect(bar.width, 280.0); expect( bar.shape, isA().having( (RoundedRectangleBorder b) => b.borderRadius, 'radius', BorderRadius.circular(10.0), ), ); }); testWidgets('Snackbar should disappear after timeout', (WidgetTester tester) async { await tester.pumpWidget(const example.SnackBarExampleApp()); expect(find.byType(SnackBar), findsNothing); await tester.tap(find.byType(ElevatedButton)); await tester.pumpAndSettle(); expect(find.byType(SnackBar), findsOneWidget); await tester.pump(const Duration(milliseconds: 1500)); await tester.pumpAndSettle(); expect(find.byType(SnackBar), findsNothing); }); }