| // Copyright 2016 The Chromium 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_test/flutter_test.dart'; |
| |
| void main() { |
| testWidgets('ButtonBar default control smoketest', (WidgetTester tester) async { |
| await tester.pumpWidget( |
| const Directionality( |
| textDirection: TextDirection.ltr, |
| child: ButtonBar(), |
| ), |
| ); |
| }); |
| |
| testWidgets('ButtonBar has a min height of 52 when using ButtonBarLayoutBehavior.constrained', (WidgetTester tester) async { |
| await tester.pumpWidget( |
| SingleChildScrollView( |
| child: ListBody( |
| children: <Widget>[ |
| ButtonTheme.bar( |
| layoutBehavior: ButtonBarLayoutBehavior.constrained, |
| child: const Directionality( |
| textDirection: TextDirection.ltr, |
| child: ButtonBar( |
| children: <Widget>[ |
| SizedBox(width: 10.0, height: 10.0), |
| ], |
| ), |
| ), |
| ), |
| ], |
| ), |
| ), |
| ); |
| |
| final Finder buttonBar = find.byType(ButtonBar); |
| expect(tester.getBottomRight(buttonBar).dy - tester.getTopRight(buttonBar).dy, 52.0); |
| }); |
| |
| testWidgets('ButtonBar has padding applied when using ButtonBarLayoutBehavior.padded', (WidgetTester tester) async { |
| await tester.pumpWidget( |
| SingleChildScrollView( |
| child: ListBody( |
| children: <Widget>[ |
| ButtonTheme.bar( |
| layoutBehavior: ButtonBarLayoutBehavior.padded, |
| child: const Directionality( |
| textDirection: TextDirection.ltr, |
| child: ButtonBar( |
| children: <Widget>[ |
| SizedBox(width: 10.0, height: 10.0), |
| ], |
| ), |
| ), |
| ), |
| ], |
| ), |
| ), |
| ); |
| |
| final Finder buttonBar = find.byType(ButtonBar); |
| expect(tester.getBottomRight(buttonBar).dy - tester.getTopRight(buttonBar).dy, 26.0); |
| }); |
| |
| testWidgets('ButtonBar FlatButton inherits Theme accentColor', (WidgetTester tester) async { |
| // Regression test for https://github.com/flutter/flutter/issues/22789 |
| |
| await tester.pumpWidget( |
| MaterialApp( |
| theme: ThemeData(accentColor: const Color(1)), |
| home: Builder( |
| builder: (BuildContext context) { |
| return Center( |
| child: ButtonTheme.bar( |
| child: ButtonBar( |
| children: <Widget>[ |
| FlatButton( |
| child: const Text('button'), |
| onPressed: () { |
| showDialog<void>( |
| context: context, |
| builder: (BuildContext context) { |
| return AlertDialog( // puts its actions in a ButtonBar |
| actions: <Widget>[ |
| FlatButton( |
| onPressed: () { }, |
| child: const Text('enabled'), |
| ), |
| ], |
| ); |
| }, |
| ); |
| }, |
| ), |
| ], |
| ), |
| ), |
| ); |
| }, |
| ), |
| ), |
| ); |
| |
| expect(tester.widget<RawMaterialButton>(find.byType(RawMaterialButton)).textStyle.color, const Color(1)); |
| |
| // Show the dialog |
| await tester.tap(find.text('button')); |
| await tester.pumpAndSettle(); |
| |
| final Finder dialogButton = find.ancestor( |
| of: find.text('enabled'), |
| matching: find.byType(RawMaterialButton), |
| ); |
| expect(tester.widget<RawMaterialButton>(dialogButton).textStyle.color, const Color(1)); |
| }); |
| } |