| // 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/floating_action_button/floating_action_button.3.dart' |
| as example; |
| import 'package:flutter_test/flutter_test.dart'; |
| |
| void main() { |
| testWidgets('FloatingActionButton variants', (WidgetTester tester) async { |
| RawMaterialButton getRawMaterialButtonWidget(Finder finder) { |
| return tester.widget<RawMaterialButton>(finder); |
| } |
| |
| await tester.pumpWidget( |
| const example.MyApp(), |
| ); |
| |
| final ThemeData theme = ThemeData(colorSchemeSeed: const Color(0xff6750a4), useMaterial3: true); |
| |
| expect(find.byType(FloatingActionButton), findsNWidgets(4)); |
| expect(find.byIcon(Icons.add), findsNWidgets(4)); |
| |
| final Finder smallFabMaterialButton = find.byType(RawMaterialButton).at(0); |
| final RenderBox smallFabRenderBox = tester.renderObject(smallFabMaterialButton); |
| expect(smallFabRenderBox.size, const Size(48.0, 48.0)); |
| expect(getRawMaterialButtonWidget(smallFabMaterialButton).fillColor, theme.colorScheme.primaryContainer); |
| expect(getRawMaterialButtonWidget(smallFabMaterialButton).shape, RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0))); |
| |
| final Finder regularFABMaterialButton = find.byType(RawMaterialButton).at(1); |
| final RenderBox regularFABRenderBox = tester.renderObject(regularFABMaterialButton); |
| expect(regularFABRenderBox.size, const Size(56.0, 56.0)); |
| expect(getRawMaterialButtonWidget(regularFABMaterialButton).fillColor, theme.colorScheme.primaryContainer); |
| expect(getRawMaterialButtonWidget(regularFABMaterialButton).shape, RoundedRectangleBorder(borderRadius: BorderRadius.circular(16.0))); |
| |
| final Finder largeFABMaterialButton = find.byType(RawMaterialButton).at(2); |
| final RenderBox largeFABRenderBox = tester.renderObject(largeFABMaterialButton); |
| expect(largeFABRenderBox.size, const Size(96.0, 96.0)); |
| expect(getRawMaterialButtonWidget(largeFABMaterialButton).fillColor, theme.colorScheme.primaryContainer); |
| expect(getRawMaterialButtonWidget(largeFABMaterialButton).shape, RoundedRectangleBorder(borderRadius: BorderRadius.circular(28.0))); |
| |
| final Finder extendedFABMaterialButton = find.byType(RawMaterialButton).at(3); |
| final RenderBox extendedFABRenderBox = tester.renderObject(extendedFABMaterialButton); |
| expect(extendedFABRenderBox.size, const Size(111.0, 56.0)); |
| expect(getRawMaterialButtonWidget(extendedFABMaterialButton).fillColor, theme.colorScheme.primaryContainer); |
| expect(getRawMaterialButtonWidget(extendedFABMaterialButton).shape, RoundedRectangleBorder(borderRadius: BorderRadius.circular(16.0))); |
| }); |
| } |