Unverified Commit 789d668e authored by Darren Austin's avatar Darren Austin Committed by GitHub

Added statesController to the button icon constructors. (#113419)

parent e93297b9
...@@ -95,6 +95,7 @@ class ElevatedButton extends ButtonStyleButton { ...@@ -95,6 +95,7 @@ class ElevatedButton extends ButtonStyleButton {
FocusNode? focusNode, FocusNode? focusNode,
bool? autofocus, bool? autofocus,
Clip? clipBehavior, Clip? clipBehavior,
MaterialStatesController? statesController,
required Widget icon, required Widget icon,
required Widget label, required Widget label,
}) = _ElevatedButtonWithIcon; }) = _ElevatedButtonWithIcon;
...@@ -482,6 +483,7 @@ class _ElevatedButtonWithIcon extends ElevatedButton { ...@@ -482,6 +483,7 @@ class _ElevatedButtonWithIcon extends ElevatedButton {
super.focusNode, super.focusNode,
bool? autofocus, bool? autofocus,
Clip? clipBehavior, Clip? clipBehavior,
super.statesController,
required Widget icon, required Widget icon,
required Widget label, required Widget label,
}) : assert(icon != null), }) : assert(icon != null),
......
...@@ -96,6 +96,7 @@ class FilledButton extends ButtonStyleButton { ...@@ -96,6 +96,7 @@ class FilledButton extends ButtonStyleButton {
FocusNode? focusNode, FocusNode? focusNode,
bool? autofocus, bool? autofocus,
Clip? clipBehavior, Clip? clipBehavior,
MaterialStatesController? statesController,
required Widget icon, required Widget icon,
required Widget label, required Widget label,
}) = _FilledButtonWithIcon; }) = _FilledButtonWithIcon;
...@@ -138,6 +139,7 @@ class FilledButton extends ButtonStyleButton { ...@@ -138,6 +139,7 @@ class FilledButton extends ButtonStyleButton {
FocusNode? focusNode, FocusNode? focusNode,
bool? autofocus, bool? autofocus,
Clip? clipBehavior, Clip? clipBehavior,
MaterialStatesController? statesController,
required Widget icon, required Widget icon,
required Widget label, required Widget label,
}) { }) {
...@@ -151,6 +153,7 @@ class FilledButton extends ButtonStyleButton { ...@@ -151,6 +153,7 @@ class FilledButton extends ButtonStyleButton {
focusNode: focusNode, focusNode: focusNode,
autofocus: autofocus, autofocus: autofocus,
clipBehavior: clipBehavior, clipBehavior: clipBehavior,
statesController: statesController,
icon: icon, icon: icon,
label: label, label: label,
); );
...@@ -430,6 +433,7 @@ class _FilledButtonWithIcon extends FilledButton { ...@@ -430,6 +433,7 @@ class _FilledButtonWithIcon extends FilledButton {
super.focusNode, super.focusNode,
bool? autofocus, bool? autofocus,
Clip? clipBehavior, Clip? clipBehavior,
super.statesController,
required Widget icon, required Widget icon,
required Widget label, required Widget label,
}) : assert(icon != null), }) : assert(icon != null),
...@@ -450,6 +454,7 @@ class _FilledButtonWithIcon extends FilledButton { ...@@ -450,6 +454,7 @@ class _FilledButtonWithIcon extends FilledButton {
super.focusNode, super.focusNode,
bool? autofocus, bool? autofocus,
Clip? clipBehavior, Clip? clipBehavior,
super.statesController,
required Widget icon, required Widget icon,
required Widget label, required Widget label,
}) : assert(icon != null), }) : assert(icon != null),
......
...@@ -98,6 +98,7 @@ class OutlinedButton extends ButtonStyleButton { ...@@ -98,6 +98,7 @@ class OutlinedButton extends ButtonStyleButton {
FocusNode? focusNode, FocusNode? focusNode,
bool? autofocus, bool? autofocus,
Clip? clipBehavior, Clip? clipBehavior,
MaterialStatesController? statesController,
required Widget icon, required Widget icon,
required Widget label, required Widget label,
}) = _OutlinedButtonWithIcon; }) = _OutlinedButtonWithIcon;
...@@ -413,6 +414,7 @@ class _OutlinedButtonWithIcon extends OutlinedButton { ...@@ -413,6 +414,7 @@ class _OutlinedButtonWithIcon extends OutlinedButton {
super.focusNode, super.focusNode,
bool? autofocus, bool? autofocus,
Clip? clipBehavior, Clip? clipBehavior,
super.statesController,
required Widget icon, required Widget icon,
required Widget label, required Widget label,
}) : assert(icon != null), }) : assert(icon != null),
......
...@@ -107,6 +107,7 @@ class TextButton extends ButtonStyleButton { ...@@ -107,6 +107,7 @@ class TextButton extends ButtonStyleButton {
FocusNode? focusNode, FocusNode? focusNode,
bool? autofocus, bool? autofocus,
Clip? clipBehavior, Clip? clipBehavior,
MaterialStatesController? statesController,
required Widget icon, required Widget icon,
required Widget label, required Widget label,
}) = _TextButtonWithIcon; }) = _TextButtonWithIcon;
...@@ -448,6 +449,7 @@ class _TextButtonWithIcon extends TextButton { ...@@ -448,6 +449,7 @@ class _TextButtonWithIcon extends TextButton {
super.focusNode, super.focusNode,
bool? autofocus, bool? autofocus,
Clip? clipBehavior, Clip? clipBehavior,
super.statesController,
required Widget icon, required Widget icon,
required Widget label, required Widget label,
}) : assert(icon != null), }) : assert(icon != null),
......
...@@ -1624,7 +1624,7 @@ void main() { ...@@ -1624,7 +1624,7 @@ void main() {
expect(material.textStyle!.color, Colors.white); expect(material.textStyle!.color, Colors.white);
}); });
testWidgets('ElevatedButton statesController', (WidgetTester tester) async { Future<void> testStatesController(Widget? icon, WidgetTester tester) async {
int count = 0; int count = 0;
void valueChanged() { void valueChanged() {
count += 1; count += 1;
...@@ -1635,10 +1635,17 @@ void main() { ...@@ -1635,10 +1635,17 @@ void main() {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: Center( home: Center(
child: ElevatedButton( child: icon == null
? ElevatedButton(
statesController: controller, statesController: controller,
onPressed: () { }, onPressed: () { },
child: const Text('button'), child: const Text('button'),
)
: ElevatedButton.icon(
statesController: controller,
onPressed: () { },
icon: icon,
label: const Text('button'),
), ),
), ),
), ),
...@@ -1647,7 +1654,7 @@ void main() { ...@@ -1647,7 +1654,7 @@ void main() {
expect(controller.value, <MaterialState>{}); expect(controller.value, <MaterialState>{});
expect(count, 0); 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( final TestGesture gesture = await tester.createGesture(
kind: PointerDeviceKind.mouse, kind: PointerDeviceKind.mouse,
); );
...@@ -1698,10 +1705,17 @@ void main() { ...@@ -1698,10 +1705,17 @@ void main() {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: Center( home: Center(
child: ElevatedButton( child: icon == null
? ElevatedButton(
statesController: controller, statesController: controller,
onPressed: null, onPressed: null,
child: const Text('button'), child: const Text('button'),
)
: ElevatedButton.icon(
statesController: controller,
onPressed: null,
icon: icon,
label: const Text('button'),
), ),
), ),
), ),
...@@ -1714,6 +1728,14 @@ void main() { ...@@ -1714,6 +1728,14 @@ void main() {
expect(controller.value, <MaterialState>{MaterialState.disabled}); expect(controller.value, <MaterialState>{MaterialState.disabled});
expect(count, 11); expect(count, 11);
await gesture.removePointer(); 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 { testWidgets('Disabled ElevatedButton statesController', (WidgetTester tester) async {
......
...@@ -1628,7 +1628,7 @@ void main() { ...@@ -1628,7 +1628,7 @@ void main() {
expect(material.textStyle!.color, Colors.white); expect(material.textStyle!.color, Colors.white);
}); });
testWidgets('FilledButton statesController', (WidgetTester tester) async { Future<void> testStatesController(Widget? icon, WidgetTester tester) async {
int count = 0; int count = 0;
void valueChanged() { void valueChanged() {
count += 1; count += 1;
...@@ -1639,10 +1639,17 @@ void main() { ...@@ -1639,10 +1639,17 @@ void main() {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: Center( home: Center(
child: FilledButton( child: icon == null
? FilledButton(
statesController: controller, statesController: controller,
onPressed: () { }, onPressed: () { },
child: const Text('button'), child: const Text('button'),
)
: FilledButton.icon(
statesController: controller,
onPressed: () { },
icon: icon,
label: const Text('button'),
), ),
), ),
), ),
...@@ -1651,7 +1658,7 @@ void main() { ...@@ -1651,7 +1658,7 @@ void main() {
expect(controller.value, <MaterialState>{}); expect(controller.value, <MaterialState>{});
expect(count, 0); 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( final TestGesture gesture = await tester.createGesture(
kind: PointerDeviceKind.mouse, kind: PointerDeviceKind.mouse,
); );
...@@ -1702,10 +1709,17 @@ void main() { ...@@ -1702,10 +1709,17 @@ void main() {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: Center( home: Center(
child: FilledButton( child: icon == null
? FilledButton(
statesController: controller, statesController: controller,
onPressed: null, onPressed: null,
child: const Text('button'), child: const Text('button'),
)
: FilledButton.icon(
statesController: controller,
onPressed: null,
icon: icon,
label: const Text('button'),
), ),
), ),
), ),
...@@ -1718,6 +1732,14 @@ void main() { ...@@ -1718,6 +1732,14 @@ void main() {
expect(controller.value, <MaterialState>{MaterialState.disabled}); expect(controller.value, <MaterialState>{MaterialState.disabled});
expect(count, 11); expect(count, 11);
await gesture.removePointer(); 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 { testWidgets('Disabled FilledButton statesController', (WidgetTester tester) async {
......
...@@ -1742,7 +1742,7 @@ void main() { ...@@ -1742,7 +1742,7 @@ void main() {
expect(material.textStyle!.color, Colors.white); expect(material.textStyle!.color, Colors.white);
}); });
testWidgets('OutlinedButton statesController', (WidgetTester tester) async { Future<void> testStatesController(Widget? icon, WidgetTester tester) async {
int count = 0; int count = 0;
void valueChanged() { void valueChanged() {
count += 1; count += 1;
...@@ -1753,10 +1753,17 @@ void main() { ...@@ -1753,10 +1753,17 @@ void main() {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: Center( home: Center(
child: OutlinedButton( child: icon == null
? OutlinedButton(
statesController: controller, statesController: controller,
onPressed: () { }, onPressed: () { },
child: const Text('button'), child: const Text('button'),
)
: OutlinedButton.icon(
statesController: controller,
onPressed: () { },
icon: icon,
label: const Text('button'),
), ),
), ),
), ),
...@@ -1765,7 +1772,7 @@ void main() { ...@@ -1765,7 +1772,7 @@ void main() {
expect(controller.value, <MaterialState>{}); expect(controller.value, <MaterialState>{});
expect(count, 0); 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( final TestGesture gesture = await tester.createGesture(
kind: PointerDeviceKind.mouse, kind: PointerDeviceKind.mouse,
); );
...@@ -1816,10 +1823,17 @@ void main() { ...@@ -1816,10 +1823,17 @@ void main() {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: Center( home: Center(
child: OutlinedButton( child: icon == null
? OutlinedButton(
statesController: controller, statesController: controller,
onPressed: null, onPressed: null,
child: const Text('button'), child: const Text('button'),
)
: OutlinedButton.icon(
statesController: controller,
onPressed: null,
icon: icon,
label: const Text('button'),
), ),
), ),
), ),
...@@ -1827,13 +1841,19 @@ void main() { ...@@ -1827,13 +1841,19 @@ void main() {
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(controller.value, <MaterialState>{MaterialState.hovered, MaterialState.disabled}); expect(controller.value, <MaterialState>{MaterialState.hovered, MaterialState.disabled});
expect(count, 10); // removes pressed and adds disabled - two changes expect(count, 10); // removes pressed and adds disabled - two changes
await gesture.moveTo(Offset.zero); await gesture.moveTo(Offset.zero);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(controller.value, <MaterialState>{MaterialState.disabled}); expect(controller.value, <MaterialState>{MaterialState.disabled});
expect(count, 11); expect(count, 11);
await gesture.removePointer(); 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 { testWidgets('Disabled OutlinedButton statesController', (WidgetTester tester) async {
......
...@@ -1549,7 +1549,7 @@ void main() { ...@@ -1549,7 +1549,7 @@ void main() {
expect(material.textStyle!.color, Colors.white); expect(material.textStyle!.color, Colors.white);
}); });
testWidgets('TextButton statesController', (WidgetTester tester) async { Future<void> testStatesController(Widget? icon, WidgetTester tester) async {
int count = 0; int count = 0;
void valueChanged() { void valueChanged() {
count += 1; count += 1;
...@@ -1560,10 +1560,17 @@ void main() { ...@@ -1560,10 +1560,17 @@ void main() {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: Center( home: Center(
child: TextButton( child: icon == null
? TextButton(
statesController: controller, statesController: controller,
onPressed: () { }, onPressed: () { },
child: const Text('button'), child: const Text('button'),
)
: TextButton.icon(
statesController: controller,
onPressed: () { },
icon: icon,
label: const Text('button'),
), ),
), ),
), ),
...@@ -1572,7 +1579,7 @@ void main() { ...@@ -1572,7 +1579,7 @@ void main() {
expect(controller.value, <MaterialState>{}); expect(controller.value, <MaterialState>{});
expect(count, 0); 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( final TestGesture gesture = await tester.createGesture(
kind: PointerDeviceKind.mouse, kind: PointerDeviceKind.mouse,
); );
...@@ -1623,10 +1630,17 @@ void main() { ...@@ -1623,10 +1630,17 @@ void main() {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
home: Center( home: Center(
child: TextButton( child: icon == null
? TextButton(
statesController: controller, statesController: controller,
onPressed: null, onPressed: null,
child: const Text('button'), child: const Text('button'),
)
: TextButton.icon(
statesController: controller,
onPressed: null,
icon: icon,
label: const Text('button'),
), ),
), ),
), ),
...@@ -1634,13 +1648,19 @@ void main() { ...@@ -1634,13 +1648,19 @@ void main() {
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(controller.value, <MaterialState>{MaterialState.hovered, MaterialState.disabled}); expect(controller.value, <MaterialState>{MaterialState.hovered, MaterialState.disabled});
expect(count, 10); // removes pressed and adds disabled - two changes expect(count, 10); // removes pressed and adds disabled - two changes
await gesture.moveTo(Offset.zero); await gesture.moveTo(Offset.zero);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(controller.value, <MaterialState>{MaterialState.disabled}); expect(controller.value, <MaterialState>{MaterialState.disabled});
expect(count, 11); expect(count, 11);
await gesture.removePointer(); 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 { testWidgets('Disabled TextButton statesController', (WidgetTester tester) async {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment