blob: bb1f1cbb4bd7db2938d6785933c361ebcbe37fe0 [file] [log] [blame] [edit]
// 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.0.dart'
as example;
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets('FloatingActionButton', (WidgetTester tester) async {
await tester.pumpWidget(
const example.FloatingActionButtonExampleApp(),
);
expect(find.byType(FloatingActionButton), findsOneWidget);
expect(find.byIcon(Icons.navigation), findsOneWidget);
RawMaterialButton getRawMaterialButtonWidget() {
return tester.widget<RawMaterialButton>(find.byType(RawMaterialButton));
}
Color? getIconColor() {
final RichText iconRichText = tester.widget<RichText>(
find.descendant(of: find.byIcon(Icons.navigation), matching: find.byType(RichText)),
);
return iconRichText.text.style?.color;
}
await tester.tap(find.byType(FloatingActionButton));
await tester.pumpAndSettle(); // Wait for the animation to finish.
expect(getRawMaterialButtonWidget().fillColor, Colors.green);
await tester.tap(find.byType(FloatingActionButton));
await tester.pumpAndSettle(); // Wait for the animation to finish.
expect(getRawMaterialButtonWidget().fillColor, Colors.green);
expect(getIconColor(), Colors.white);
await tester.tap(find.byType(FloatingActionButton));
await tester.pumpAndSettle(); // Wait for the animation to finish.
expect(getRawMaterialButtonWidget().fillColor, Colors.green);
expect(getIconColor(), Colors.white);
expect(getRawMaterialButtonWidget().shape, const CircleBorder());
});
}