mirror of
https://github.com/alibaba/flutter-go.git
synced 2025-07-13 08:33:26 +08:00
299 lines
11 KiB
Dart
299 lines
11 KiB
Dart
// Copyright 2018 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_web/material.dart';
|
|
import 'package:flutter_web_test/flutter_web_test.dart';
|
|
|
|
const ShapeBorder defaultButtonShape = RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.all(Radius.circular(2.0)));
|
|
const EdgeInsets defaultButtonPadding =
|
|
EdgeInsets.only(left: 16.0, right: 16.0);
|
|
const BoxConstraints defaultButtonConstraints =
|
|
BoxConstraints(minWidth: 88.0, minHeight: 36.0);
|
|
const Duration defaultButtonDuration = Duration(milliseconds: 200);
|
|
|
|
void main() {
|
|
group('RaisedButton', () {
|
|
testWidgets('theme: ThemeData.light(), enabled: true',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData.light(),
|
|
home: Center(
|
|
child: RaisedButton(
|
|
onPressed: () {}, // button.enabled == true
|
|
child: const Text('button'),
|
|
)),
|
|
),
|
|
);
|
|
|
|
final RawMaterialButton raw =
|
|
tester.widget<RawMaterialButton>(find.byType(RawMaterialButton));
|
|
expect(raw.textStyle.color, const Color(0xdd000000));
|
|
expect(raw.fillColor, const Color(0xffe0e0e0));
|
|
expect(
|
|
raw.highlightColor, const Color(0x29000000)); // Was Color(0x66bcbcbc)
|
|
expect(raw.splashColor, const Color(0x1f000000)); // Was Color(0x66c8c8c8)
|
|
expect(raw.elevation, 2.0);
|
|
expect(raw.highlightElevation, 8.0);
|
|
expect(raw.disabledElevation, 0.0);
|
|
expect(raw.constraints, defaultButtonConstraints);
|
|
expect(raw.padding, defaultButtonPadding);
|
|
expect(raw.shape, defaultButtonShape);
|
|
expect(raw.animationDuration, defaultButtonDuration);
|
|
expect(raw.materialTapTargetSize, MaterialTapTargetSize.padded);
|
|
});
|
|
|
|
testWidgets('theme: ThemeData.light(), enabled: false',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData.light(),
|
|
home: const Center(
|
|
child: RaisedButton(
|
|
onPressed: null, // button.enabled == false
|
|
child: Text('button'),
|
|
)),
|
|
),
|
|
);
|
|
|
|
final RawMaterialButton raw =
|
|
tester.widget<RawMaterialButton>(find.byType(RawMaterialButton));
|
|
expect(raw.textStyle.color, const Color(0x61000000));
|
|
expect(raw.fillColor, const Color(0x61000000));
|
|
// highlightColor, disabled button can't be pressed
|
|
// splashColor, disabled button doesn't splash
|
|
expect(raw.elevation, 2.0);
|
|
expect(raw.highlightElevation, 8.0);
|
|
expect(raw.disabledElevation, 0.0);
|
|
expect(raw.constraints, defaultButtonConstraints);
|
|
expect(raw.padding, defaultButtonPadding);
|
|
expect(raw.shape, defaultButtonShape);
|
|
expect(raw.animationDuration, defaultButtonDuration);
|
|
expect(raw.materialTapTargetSize, MaterialTapTargetSize.padded);
|
|
});
|
|
});
|
|
|
|
group('FlatButton', () {
|
|
testWidgets('theme: ThemeData.light(), enabled: true',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData.light(),
|
|
home: Center(
|
|
child: FlatButton(
|
|
onPressed: () {}, // button.enabled == true
|
|
child: const Text('button'),
|
|
)),
|
|
),
|
|
);
|
|
|
|
final RawMaterialButton raw =
|
|
tester.widget<RawMaterialButton>(find.byType(RawMaterialButton));
|
|
expect(raw.textStyle.color, const Color(0xdd000000));
|
|
expect(raw.fillColor, null);
|
|
expect(
|
|
raw.highlightColor, const Color(0x29000000)); // Was Color(0x66bcbcbc)
|
|
expect(raw.splashColor, const Color(0x1f000000)); // Was Color(0x66c8c8c8)
|
|
expect(raw.elevation, 0.0);
|
|
expect(raw.highlightElevation, 0.0);
|
|
expect(raw.disabledElevation, 0.0);
|
|
expect(raw.constraints, defaultButtonConstraints);
|
|
expect(raw.padding, defaultButtonPadding);
|
|
expect(raw.shape, defaultButtonShape);
|
|
expect(raw.animationDuration, defaultButtonDuration);
|
|
expect(raw.materialTapTargetSize, MaterialTapTargetSize.padded);
|
|
});
|
|
|
|
testWidgets('theme: ThemeData.light(), enabled: false',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData.light(),
|
|
home: const Center(
|
|
child: FlatButton(
|
|
onPressed: null, // button.enabled == false
|
|
child: Text('button'),
|
|
)),
|
|
),
|
|
);
|
|
|
|
final RawMaterialButton raw =
|
|
tester.widget<RawMaterialButton>(find.byType(RawMaterialButton));
|
|
expect(raw.textStyle.color, const Color(0x61000000));
|
|
expect(raw.fillColor, null);
|
|
// highlightColor, disabled button can't be pressed
|
|
// splashColor, disabled button doesn't splash
|
|
expect(raw.elevation, 0.0);
|
|
expect(raw.highlightElevation, 0.0);
|
|
expect(raw.disabledElevation, 0.0);
|
|
expect(raw.constraints, defaultButtonConstraints);
|
|
expect(raw.padding, defaultButtonPadding);
|
|
expect(raw.shape, defaultButtonShape);
|
|
expect(raw.animationDuration, const Duration(milliseconds: 200));
|
|
expect(raw.materialTapTargetSize, MaterialTapTargetSize.padded);
|
|
});
|
|
});
|
|
|
|
group('OutlineButton', () {
|
|
testWidgets(
|
|
'theme: ThemeData.light(), enabled: true, highlightElevation: 2.0',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData.light(),
|
|
home: Center(
|
|
child: OutlineButton(
|
|
onPressed: () {}, // button.enabled == true
|
|
// Causes the button to be filled with the theme's canvasColor
|
|
// instead of Colors.transparent before the button material's
|
|
// elevation is animated to 2.0.
|
|
highlightElevation: 2.0,
|
|
child: const Text('button'),
|
|
)),
|
|
),
|
|
);
|
|
|
|
final RawMaterialButton raw =
|
|
tester.widget<RawMaterialButton>(find.byType(RawMaterialButton));
|
|
expect(raw.textStyle.color, const Color(0xdd000000));
|
|
expect(raw.fillColor, const Color(0x00fafafa));
|
|
expect(
|
|
raw.highlightColor, const Color(0x29000000)); // Was Color(0x66bcbcbc)
|
|
expect(raw.splashColor, const Color(0x1f000000)); // Was Color(0x66c8c8c8)
|
|
expect(raw.elevation, 0.0);
|
|
expect(raw.highlightElevation, 0.0);
|
|
expect(raw.disabledElevation, 0.0);
|
|
expect(raw.constraints, defaultButtonConstraints);
|
|
expect(raw.padding, defaultButtonPadding);
|
|
// animationDuration can't be configed by the theme/constructor
|
|
expect(raw.materialTapTargetSize, MaterialTapTargetSize.padded);
|
|
});
|
|
|
|
testWidgets('theme: ThemeData.light(), enabled: true',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData.light(),
|
|
home: Center(
|
|
child: OutlineButton(
|
|
onPressed: () {}, // button.enabled == true
|
|
child: const Text('button'),
|
|
)),
|
|
),
|
|
);
|
|
|
|
final RawMaterialButton raw =
|
|
tester.widget<RawMaterialButton>(find.byType(RawMaterialButton));
|
|
expect(raw.textStyle.color, const Color(0xdd000000));
|
|
expect(raw.fillColor, Colors.transparent);
|
|
expect(
|
|
raw.highlightColor, const Color(0x29000000)); // Was Color(0x66bcbcbc)
|
|
expect(raw.splashColor, const Color(0x1f000000)); // Was Color(0x66c8c8c8)
|
|
expect(raw.elevation, 0.0);
|
|
expect(raw.highlightElevation, 0.0);
|
|
expect(raw.disabledElevation, 0.0);
|
|
expect(raw.constraints, defaultButtonConstraints);
|
|
expect(raw.padding, defaultButtonPadding);
|
|
// animationDuration can't be configed by the theme/constructor
|
|
expect(raw.materialTapTargetSize, MaterialTapTargetSize.padded);
|
|
});
|
|
|
|
testWidgets('theme: ThemeData.light(), enabled: false',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData.light(),
|
|
home: const Center(
|
|
child: OutlineButton(
|
|
onPressed: null, // button.enabled == false
|
|
child: Text('button'),
|
|
)),
|
|
),
|
|
);
|
|
|
|
final RawMaterialButton raw =
|
|
tester.widget<RawMaterialButton>(find.byType(RawMaterialButton));
|
|
expect(raw.textStyle.color, const Color(0x61000000));
|
|
expect(raw.fillColor, const Color(0x00000000));
|
|
// highlightColor, disabled button can't be pressed
|
|
// splashColor, disabled button doesn't splash
|
|
expect(raw.elevation, 0.0);
|
|
expect(raw.highlightElevation, 0.0);
|
|
expect(raw.disabledElevation, 0.0);
|
|
expect(raw.constraints, defaultButtonConstraints);
|
|
expect(raw.padding, defaultButtonPadding);
|
|
// animationDuration can't be configed by the theme/constructor
|
|
expect(raw.materialTapTargetSize, MaterialTapTargetSize.padded);
|
|
});
|
|
});
|
|
|
|
group('FloatingActionButton', () {
|
|
const BoxConstraints defaultFABConstraints =
|
|
BoxConstraints.tightFor(width: 56.0, height: 56.0);
|
|
const ShapeBorder defaultFABShape = CircleBorder(
|
|
side: BorderSide(
|
|
color: Color(0xff000000), width: 0.0, style: BorderStyle.none));
|
|
const EdgeInsets defaultFABPadding = EdgeInsets.zero;
|
|
|
|
testWidgets('theme: ThemeData.light(), enabled: true',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData.light(),
|
|
home: Center(
|
|
child: FloatingActionButton(
|
|
onPressed: () {}, // button.enabled == true
|
|
child: const Icon(Icons.add),
|
|
)),
|
|
),
|
|
);
|
|
|
|
final RawMaterialButton raw =
|
|
tester.widget<RawMaterialButton>(find.byType(RawMaterialButton));
|
|
expect(raw.enabled, true);
|
|
expect(raw.textStyle.color, const Color(0xffffffff));
|
|
expect(raw.fillColor, const Color(0xff2196f3));
|
|
expect(raw.elevation, 6.0);
|
|
expect(raw.highlightElevation, 12.0);
|
|
expect(raw.disabledElevation, 6.0);
|
|
expect(raw.constraints, defaultFABConstraints);
|
|
expect(raw.padding, defaultFABPadding);
|
|
expect(raw.shape, defaultFABShape);
|
|
expect(raw.animationDuration, defaultButtonDuration);
|
|
expect(raw.materialTapTargetSize, MaterialTapTargetSize.padded);
|
|
});
|
|
|
|
testWidgets('theme: ThemeData.light(), enabled: false',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData.light(),
|
|
home: const Center(
|
|
child: FloatingActionButton(
|
|
onPressed: null, // button.enabled == false
|
|
child: Icon(Icons.add),
|
|
)),
|
|
),
|
|
);
|
|
|
|
final RawMaterialButton raw =
|
|
tester.widget<RawMaterialButton>(find.byType(RawMaterialButton));
|
|
expect(raw.enabled, false);
|
|
expect(raw.textStyle.color, const Color(0xffffffff));
|
|
expect(raw.fillColor, const Color(0xff2196f3));
|
|
// highlightColor, disabled button can't be pressed
|
|
// splashColor, disabled button doesn't splash
|
|
expect(raw.elevation, 6.0);
|
|
expect(raw.highlightElevation, 12.0);
|
|
expect(raw.disabledElevation, 6.0);
|
|
expect(raw.constraints, defaultFABConstraints);
|
|
expect(raw.padding, defaultFABPadding);
|
|
expect(raw.shape, defaultFABShape);
|
|
expect(raw.animationDuration, defaultButtonDuration);
|
|
expect(raw.materialTapTargetSize, MaterialTapTargetSize.padded);
|
|
});
|
|
});
|
|
}
|