mirror of
https://github.com/flutter/flutter
synced 2024-10-06 00:09:53 +00:00
Added statesController to the button icon constructors. (#113419)
This commit is contained in:
parent
e93297b9d6
commit
789d668ed7
|
@ -95,6 +95,7 @@ class ElevatedButton extends ButtonStyleButton {
|
|||
FocusNode? focusNode,
|
||||
bool? autofocus,
|
||||
Clip? clipBehavior,
|
||||
MaterialStatesController? statesController,
|
||||
required Widget icon,
|
||||
required Widget label,
|
||||
}) = _ElevatedButtonWithIcon;
|
||||
|
@ -482,6 +483,7 @@ class _ElevatedButtonWithIcon extends ElevatedButton {
|
|||
super.focusNode,
|
||||
bool? autofocus,
|
||||
Clip? clipBehavior,
|
||||
super.statesController,
|
||||
required Widget icon,
|
||||
required Widget label,
|
||||
}) : assert(icon != null),
|
||||
|
|
|
@ -96,6 +96,7 @@ class FilledButton extends ButtonStyleButton {
|
|||
FocusNode? focusNode,
|
||||
bool? autofocus,
|
||||
Clip? clipBehavior,
|
||||
MaterialStatesController? statesController,
|
||||
required Widget icon,
|
||||
required Widget label,
|
||||
}) = _FilledButtonWithIcon;
|
||||
|
@ -138,6 +139,7 @@ class FilledButton extends ButtonStyleButton {
|
|||
FocusNode? focusNode,
|
||||
bool? autofocus,
|
||||
Clip? clipBehavior,
|
||||
MaterialStatesController? statesController,
|
||||
required Widget icon,
|
||||
required Widget label,
|
||||
}) {
|
||||
|
@ -151,6 +153,7 @@ class FilledButton extends ButtonStyleButton {
|
|||
focusNode: focusNode,
|
||||
autofocus: autofocus,
|
||||
clipBehavior: clipBehavior,
|
||||
statesController: statesController,
|
||||
icon: icon,
|
||||
label: label,
|
||||
);
|
||||
|
@ -430,6 +433,7 @@ class _FilledButtonWithIcon extends FilledButton {
|
|||
super.focusNode,
|
||||
bool? autofocus,
|
||||
Clip? clipBehavior,
|
||||
super.statesController,
|
||||
required Widget icon,
|
||||
required Widget label,
|
||||
}) : assert(icon != null),
|
||||
|
@ -450,6 +454,7 @@ class _FilledButtonWithIcon extends FilledButton {
|
|||
super.focusNode,
|
||||
bool? autofocus,
|
||||
Clip? clipBehavior,
|
||||
super.statesController,
|
||||
required Widget icon,
|
||||
required Widget label,
|
||||
}) : assert(icon != null),
|
||||
|
|
|
@ -98,6 +98,7 @@ class OutlinedButton extends ButtonStyleButton {
|
|||
FocusNode? focusNode,
|
||||
bool? autofocus,
|
||||
Clip? clipBehavior,
|
||||
MaterialStatesController? statesController,
|
||||
required Widget icon,
|
||||
required Widget label,
|
||||
}) = _OutlinedButtonWithIcon;
|
||||
|
@ -413,6 +414,7 @@ class _OutlinedButtonWithIcon extends OutlinedButton {
|
|||
super.focusNode,
|
||||
bool? autofocus,
|
||||
Clip? clipBehavior,
|
||||
super.statesController,
|
||||
required Widget icon,
|
||||
required Widget label,
|
||||
}) : assert(icon != null),
|
||||
|
|
|
@ -107,6 +107,7 @@ class TextButton extends ButtonStyleButton {
|
|||
FocusNode? focusNode,
|
||||
bool? autofocus,
|
||||
Clip? clipBehavior,
|
||||
MaterialStatesController? statesController,
|
||||
required Widget icon,
|
||||
required Widget label,
|
||||
}) = _TextButtonWithIcon;
|
||||
|
@ -448,6 +449,7 @@ class _TextButtonWithIcon extends TextButton {
|
|||
super.focusNode,
|
||||
bool? autofocus,
|
||||
Clip? clipBehavior,
|
||||
super.statesController,
|
||||
required Widget icon,
|
||||
required Widget label,
|
||||
}) : assert(icon != null),
|
||||
|
|
|
@ -1624,7 +1624,7 @@ void main() {
|
|||
expect(material.textStyle!.color, Colors.white);
|
||||
});
|
||||
|
||||
testWidgets('ElevatedButton statesController', (WidgetTester tester) async {
|
||||
Future<void> testStatesController(Widget? icon, WidgetTester tester) async {
|
||||
int count = 0;
|
||||
void valueChanged() {
|
||||
count += 1;
|
||||
|
@ -1635,11 +1635,18 @@ void main() {
|
|||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Center(
|
||||
child: ElevatedButton(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
child: const Text('button'),
|
||||
),
|
||||
child: icon == null
|
||||
? ElevatedButton(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
child: const Text('button'),
|
||||
)
|
||||
: ElevatedButton.icon(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
icon: icon,
|
||||
label: const Text('button'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
@ -1647,7 +1654,7 @@ void main() {
|
|||
expect(controller.value, <MaterialState>{});
|
||||
expect(count, 0);
|
||||
|
||||
final Offset center = tester.getCenter(find.byType(ElevatedButton));
|
||||
final Offset center = tester.getCenter(find.byType(Text));
|
||||
final TestGesture gesture = await tester.createGesture(
|
||||
kind: PointerDeviceKind.mouse,
|
||||
);
|
||||
|
@ -1698,11 +1705,18 @@ void main() {
|
|||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Center(
|
||||
child: ElevatedButton(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
child: const Text('button'),
|
||||
),
|
||||
child: icon == null
|
||||
? ElevatedButton(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
child: const Text('button'),
|
||||
)
|
||||
: ElevatedButton.icon(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
icon: icon,
|
||||
label: const Text('button'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
@ -1714,6 +1728,14 @@ void main() {
|
|||
expect(controller.value, <MaterialState>{MaterialState.disabled});
|
||||
expect(count, 11);
|
||||
await gesture.removePointer();
|
||||
}
|
||||
|
||||
testWidgets('ElevatedButton statesController', (WidgetTester tester) async {
|
||||
testStatesController(null, tester);
|
||||
});
|
||||
|
||||
testWidgets('ElevatedButton.icon statesController', (WidgetTester tester) async {
|
||||
testStatesController(const Icon(Icons.add), tester);
|
||||
});
|
||||
|
||||
testWidgets('Disabled ElevatedButton statesController', (WidgetTester tester) async {
|
||||
|
|
|
@ -1628,7 +1628,7 @@ void main() {
|
|||
expect(material.textStyle!.color, Colors.white);
|
||||
});
|
||||
|
||||
testWidgets('FilledButton statesController', (WidgetTester tester) async {
|
||||
Future<void> testStatesController(Widget? icon, WidgetTester tester) async {
|
||||
int count = 0;
|
||||
void valueChanged() {
|
||||
count += 1;
|
||||
|
@ -1639,11 +1639,18 @@ void main() {
|
|||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Center(
|
||||
child: FilledButton(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
child: const Text('button'),
|
||||
),
|
||||
child: icon == null
|
||||
? FilledButton(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
child: const Text('button'),
|
||||
)
|
||||
: FilledButton.icon(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
icon: icon,
|
||||
label: const Text('button'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
@ -1651,7 +1658,7 @@ void main() {
|
|||
expect(controller.value, <MaterialState>{});
|
||||
expect(count, 0);
|
||||
|
||||
final Offset center = tester.getCenter(find.byType(FilledButton));
|
||||
final Offset center = tester.getCenter(find.byType(Text));
|
||||
final TestGesture gesture = await tester.createGesture(
|
||||
kind: PointerDeviceKind.mouse,
|
||||
);
|
||||
|
@ -1702,11 +1709,18 @@ void main() {
|
|||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Center(
|
||||
child: FilledButton(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
child: const Text('button'),
|
||||
),
|
||||
child: icon == null
|
||||
? FilledButton(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
child: const Text('button'),
|
||||
)
|
||||
: FilledButton.icon(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
icon: icon,
|
||||
label: const Text('button'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
@ -1718,6 +1732,14 @@ void main() {
|
|||
expect(controller.value, <MaterialState>{MaterialState.disabled});
|
||||
expect(count, 11);
|
||||
await gesture.removePointer();
|
||||
}
|
||||
|
||||
testWidgets('FilledButton statesController', (WidgetTester tester) async {
|
||||
testStatesController(null, tester);
|
||||
});
|
||||
|
||||
testWidgets('FilledButton.icon statesController', (WidgetTester tester) async {
|
||||
testStatesController(const Icon(Icons.add), tester);
|
||||
});
|
||||
|
||||
testWidgets('Disabled FilledButton statesController', (WidgetTester tester) async {
|
||||
|
|
|
@ -1742,7 +1742,7 @@ void main() {
|
|||
expect(material.textStyle!.color, Colors.white);
|
||||
});
|
||||
|
||||
testWidgets('OutlinedButton statesController', (WidgetTester tester) async {
|
||||
Future<void> testStatesController(Widget? icon, WidgetTester tester) async {
|
||||
int count = 0;
|
||||
void valueChanged() {
|
||||
count += 1;
|
||||
|
@ -1753,11 +1753,18 @@ void main() {
|
|||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Center(
|
||||
child: OutlinedButton(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
child: const Text('button'),
|
||||
),
|
||||
child: icon == null
|
||||
? OutlinedButton(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
child: const Text('button'),
|
||||
)
|
||||
: OutlinedButton.icon(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
icon: icon,
|
||||
label: const Text('button'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
@ -1765,7 +1772,7 @@ void main() {
|
|||
expect(controller.value, <MaterialState>{});
|
||||
expect(count, 0);
|
||||
|
||||
final Offset center = tester.getCenter(find.byType(OutlinedButton));
|
||||
final Offset center = tester.getCenter(find.byType(Text));
|
||||
final TestGesture gesture = await tester.createGesture(
|
||||
kind: PointerDeviceKind.mouse,
|
||||
);
|
||||
|
@ -1816,24 +1823,37 @@ void main() {
|
|||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Center(
|
||||
child: OutlinedButton(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
child: const Text('button'),
|
||||
),
|
||||
child: icon == null
|
||||
? OutlinedButton(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
child: const Text('button'),
|
||||
)
|
||||
: OutlinedButton.icon(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
icon: icon,
|
||||
label: const Text('button'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
expect(controller.value, <MaterialState>{MaterialState.hovered, MaterialState.disabled});
|
||||
expect(count, 10); // removes pressed and adds disabled - two changes
|
||||
|
||||
await gesture.moveTo(Offset.zero);
|
||||
await tester.pumpAndSettle();
|
||||
expect(controller.value, <MaterialState>{MaterialState.disabled});
|
||||
expect(count, 11);
|
||||
|
||||
await gesture.removePointer();
|
||||
}
|
||||
|
||||
testWidgets('OutlinedButton statesController', (WidgetTester tester) async {
|
||||
testStatesController(null, tester);
|
||||
});
|
||||
|
||||
testWidgets('OutlinedButton.icon statesController', (WidgetTester tester) async {
|
||||
testStatesController(const Icon(Icons.add), tester);
|
||||
});
|
||||
|
||||
testWidgets('Disabled OutlinedButton statesController', (WidgetTester tester) async {
|
||||
|
|
|
@ -1549,7 +1549,7 @@ void main() {
|
|||
expect(material.textStyle!.color, Colors.white);
|
||||
});
|
||||
|
||||
testWidgets('TextButton statesController', (WidgetTester tester) async {
|
||||
Future<void> testStatesController(Widget? icon, WidgetTester tester) async {
|
||||
int count = 0;
|
||||
void valueChanged() {
|
||||
count += 1;
|
||||
|
@ -1560,11 +1560,18 @@ void main() {
|
|||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Center(
|
||||
child: TextButton(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
child: const Text('button'),
|
||||
),
|
||||
child: icon == null
|
||||
? TextButton(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
child: const Text('button'),
|
||||
)
|
||||
: TextButton.icon(
|
||||
statesController: controller,
|
||||
onPressed: () { },
|
||||
icon: icon,
|
||||
label: const Text('button'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
@ -1572,7 +1579,7 @@ void main() {
|
|||
expect(controller.value, <MaterialState>{});
|
||||
expect(count, 0);
|
||||
|
||||
final Offset center = tester.getCenter(find.byType(TextButton));
|
||||
final Offset center = tester.getCenter(find.byType(Text));
|
||||
final TestGesture gesture = await tester.createGesture(
|
||||
kind: PointerDeviceKind.mouse,
|
||||
);
|
||||
|
@ -1623,24 +1630,37 @@ void main() {
|
|||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Center(
|
||||
child: TextButton(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
child: const Text('button'),
|
||||
),
|
||||
child: icon == null
|
||||
? TextButton(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
child: const Text('button'),
|
||||
)
|
||||
: TextButton.icon(
|
||||
statesController: controller,
|
||||
onPressed: null,
|
||||
icon: icon,
|
||||
label: const Text('button'),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
await tester.pumpAndSettle();
|
||||
expect(controller.value, <MaterialState>{MaterialState.hovered, MaterialState.disabled});
|
||||
expect(count, 10); // removes pressed and adds disabled - two changes
|
||||
|
||||
await gesture.moveTo(Offset.zero);
|
||||
await tester.pumpAndSettle();
|
||||
expect(controller.value, <MaterialState>{MaterialState.disabled});
|
||||
expect(count, 11);
|
||||
|
||||
await gesture.removePointer();
|
||||
}
|
||||
|
||||
testWidgets('TextButton statesController', (WidgetTester tester) async {
|
||||
testStatesController(null, tester);
|
||||
});
|
||||
|
||||
testWidgets('TextButton.icon statesController', (WidgetTester tester) async {
|
||||
testStatesController(const Icon(Icons.add), tester);
|
||||
});
|
||||
|
||||
testWidgets('Disabled TextButton statesController', (WidgetTester tester) async {
|
||||
|
|
Loading…
Reference in a new issue