Skip to content

Commit

Permalink
Revert "M3 Button padding adjustments (#118449)" (#118598)
Browse files Browse the repository at this point in the history
This reverts commit 8c2fdb8.
  • Loading branch information
godofredoc authored Jan 17, 2023
1 parent 8c2fdb8 commit f22280a
Show file tree
Hide file tree
Showing 9 changed files with 26 additions and 328 deletions.
5 changes: 3 additions & 2 deletions examples/api/lib/material/app_bar/app_bar.1.dart
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ class _AppBarExampleState extends State<AppBarExample> {
label: const Text('shadow color'),
),
const SizedBox(width: 5),
ElevatedButton(
ElevatedButton.icon(
onPressed: () {
if (scrolledUnderElevation == null) {
setState(() {
Expand All @@ -111,7 +111,8 @@ class _AppBarExampleState extends State<AppBarExample> {
});
}
},
child: Text(
icon: const Icon(Icons.add),
label: Text(
'scrolledUnderElevation: ${scrolledUnderElevation ?? 'default'}',
),
),
Expand Down
28 changes: 8 additions & 20 deletions packages/flutter/lib/src/material/elevated_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -333,10 +333,10 @@ class ElevatedButton extends ButtonStyleButton {
/// * hovered - 3
/// * focused or pressed - 1
/// * `padding`
/// * `textScaleFactor <= 1` - horizontal(24)
/// * `1 < textScaleFactor <= 2` - lerp(horizontal(24), horizontal(12))
/// * `2 < textScaleFactor <= 3` - lerp(horizontal(12), horizontal(6))
/// * `3 < textScaleFactor` - horizontal(6)
/// * `textScaleFactor <= 1` - horizontal(16)
/// * `1 < textScaleFactor <= 2` - lerp(horizontal(16), horizontal(8))
/// * `2 < textScaleFactor <= 3` - lerp(horizontal(8), horizontal(4))
/// * `3 < textScaleFactor` - horizontal(4)
/// * `minimumSize` - Size(64, 40)
/// * `fixedSize` - null
/// * `maximumSize` - Size.infinite
Expand All @@ -351,10 +351,6 @@ class ElevatedButton extends ButtonStyleButton {
/// * `enableFeedback` - true
/// * `alignment` - Alignment.center
/// * `splashFactory` - Theme.splashFactory
///
/// For the [ElevatedButton.icon] factory, the start (generally the left) value of
/// [padding] is reduced from 24 to 16.
@override
ButtonStyle defaultStyleOf(BuildContext context) {
final ThemeData theme = Theme.of(context);
Expand Down Expand Up @@ -394,12 +390,10 @@ class ElevatedButton extends ButtonStyleButton {
}

EdgeInsetsGeometry _scaledPadding(BuildContext context) {
final bool useMaterial3 = Theme.of(context).useMaterial3;
final double padding1x = useMaterial3 ? 24.0 : 16.0;
return ButtonStyleButton.scaledPadding(
EdgeInsets.symmetric(horizontal: padding1x),
EdgeInsets.symmetric(horizontal: padding1x / 2),
EdgeInsets.symmetric(horizontal: padding1x / 2 / 2),
const EdgeInsets.symmetric(horizontal: 16),
const EdgeInsets.symmetric(horizontal: 8),
const EdgeInsets.symmetric(horizontal: 4),
MediaQuery.textScaleFactorOf(context),
);
}
Expand Down Expand Up @@ -502,13 +496,7 @@ class _ElevatedButtonWithIcon extends ElevatedButton {

@override
ButtonStyle defaultStyleOf(BuildContext context) {
final bool useMaterial3 = Theme.of(context).useMaterial3;
final EdgeInsetsGeometry scaledPadding = useMaterial3 ? ButtonStyleButton.scaledPadding(
const EdgeInsetsDirectional.fromSTEB(16, 0, 24, 0),
const EdgeInsetsDirectional.fromSTEB(8, 0, 12, 0),
const EdgeInsetsDirectional.fromSTEB(4, 0, 6, 0),
MediaQuery.textScaleFactorOf(context),
) : ButtonStyleButton.scaledPadding(
final EdgeInsetsGeometry scaledPadding = ButtonStyleButton.scaledPadding(
const EdgeInsetsDirectional.fromSTEB(12, 0, 16, 0),
const EdgeInsets.symmetric(horizontal: 8),
const EdgeInsetsDirectional.fromSTEB(8, 0, 4, 0),
Expand Down
60 changes: 4 additions & 56 deletions packages/flutter/lib/src/material/filled_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -345,50 +345,6 @@ class FilledButton extends ButtonStyleButton {
/// shape's [OutlinedBorder.side]. Typically the default value of an
/// [OutlinedBorder]'s side is [BorderSide.none], so an outline is not drawn.
///
/// ## Material 3 defaults
///
/// If [ThemeData.useMaterial3] is set to true the following defaults will
/// be used:
///
/// * `textStyle` - Theme.textTheme.labelLarge
/// * `backgroundColor`
/// * disabled - Theme.colorScheme.onSurface(0.12)
/// * others - Theme.colorScheme.secondaryContainer
/// * `foregroundColor`
/// * disabled - Theme.colorScheme.onSurface(0.38)
/// * others - Theme.colorScheme.onSecondaryContainer
/// * `overlayColor`
/// * hovered - Theme.colorScheme.onSecondaryContainer(0.08)
/// * focused or pressed - Theme.colorScheme.onSecondaryContainer(0.12)
/// * `shadowColor` - Theme.colorScheme.shadow
/// * `surfaceTintColor` - Colors.transparent
/// * `elevation`
/// * disabled - 0
/// * default - 1
/// * hovered - 3
/// * focused or pressed - 1
/// * `padding`
/// * `textScaleFactor <= 1` - horizontal(24)
/// * `1 < textScaleFactor <= 2` - lerp(horizontal(24), horizontal(12))
/// * `2 < textScaleFactor <= 3` - lerp(horizontal(12), horizontal(6))
/// * `3 < textScaleFactor` - horizontal(6)
/// * `minimumSize` - Size(64, 40)
/// * `fixedSize` - null
/// * `maximumSize` - Size.infinite
/// * `side` - null
/// * `shape` - StadiumBorder()
/// * `mouseCursor`
/// * disabled - SystemMouseCursors.basic
/// * others - SystemMouseCursors.click
/// * `visualDensity` - Theme.visualDensity
/// * `tapTargetSize` - Theme.materialTapTargetSize
/// * `animationDuration` - kThemeChangeDuration
/// * `enableFeedback` - true
/// * `alignment` - Alignment.center
/// * `splashFactory` - Theme.splashFactory
///
/// For the [FilledButton.icon] factory, the start (generally the left) value of
/// [padding] is reduced from 24 to 16.
@override
ButtonStyle defaultStyleOf(BuildContext context) {
switch (_variant) {
Expand All @@ -408,12 +364,10 @@ class FilledButton extends ButtonStyleButton {
}

EdgeInsetsGeometry _scaledPadding(BuildContext context) {
final bool useMaterial3 = Theme.of(context).useMaterial3;
final double padding1x = useMaterial3 ? 24.0 : 16.0;
return ButtonStyleButton.scaledPadding(
EdgeInsets.symmetric(horizontal: padding1x),
EdgeInsets.symmetric(horizontal: padding1x / 2),
EdgeInsets.symmetric(horizontal: padding1x / 2 / 2),
const EdgeInsets.symmetric(horizontal: 16),
const EdgeInsets.symmetric(horizontal: 8),
const EdgeInsets.symmetric(horizontal: 4),
MediaQuery.textScaleFactorOf(context),
);
}
Expand Down Expand Up @@ -513,13 +467,7 @@ class _FilledButtonWithIcon extends FilledButton {

@override
ButtonStyle defaultStyleOf(BuildContext context) {
final bool useMaterial3 = Theme.of(context).useMaterial3;
final EdgeInsetsGeometry scaledPadding = useMaterial3 ? ButtonStyleButton.scaledPadding(
const EdgeInsetsDirectional.fromSTEB(16, 0, 24, 0),
const EdgeInsetsDirectional.fromSTEB(8, 0, 12, 0),
const EdgeInsetsDirectional.fromSTEB(4, 0, 6, 0),
MediaQuery.textScaleFactorOf(context),
) : ButtonStyleButton.scaledPadding(
final EdgeInsetsGeometry scaledPadding = ButtonStyleButton.scaledPadding(
const EdgeInsetsDirectional.fromSTEB(12, 0, 16, 0),
const EdgeInsets.symmetric(horizontal: 8),
const EdgeInsetsDirectional.fromSTEB(8, 0, 4, 0),
Expand Down
36 changes: 7 additions & 29 deletions packages/flutter/lib/src/material/outlined_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -287,10 +287,10 @@ class OutlinedButton extends ButtonStyleButton {
/// * `surfaceTintColor` - null
/// * `elevation` - 0
/// * `padding`
/// * `textScaleFactor <= 1` - horizontal(24)
/// * `1 < textScaleFactor <= 2` - lerp(horizontal(24), horizontal(12))
/// * `2 < textScaleFactor <= 3` - lerp(horizontal(12), horizontal(6))
/// * `3 < textScaleFactor` - horizontal(6)
/// * `textScaleFactor <= 1` - horizontal(16)
/// * `1 < textScaleFactor <= 2` - lerp(horizontal(16), horizontal(8))
/// * `2 < textScaleFactor <= 3` - lerp(horizontal(8), horizontal(4))
/// * `3 < textScaleFactor` - horizontal(4)
/// * `minimumSize` - Size(64, 40)
/// * `fixedSize` - null
/// * `maximumSize` - Size.infinite
Expand All @@ -307,9 +307,6 @@ class OutlinedButton extends ButtonStyleButton {
/// * `enableFeedback` - true
/// * `alignment` - Alignment.center
/// * `splashFactory` - Theme.splashFactory
///
/// For the [OutlinedButton.icon] factory, the start (generally the left) value of
/// [padding] is reduced from 24 to 16.
@override
ButtonStyle defaultStyleOf(BuildContext context) {
final ThemeData theme = Theme.of(context);
Expand Down Expand Up @@ -350,12 +347,10 @@ class OutlinedButton extends ButtonStyleButton {
}

EdgeInsetsGeometry _scaledPadding(BuildContext context) {
final bool useMaterial3 = Theme.of(context).useMaterial3;
final double padding1x = useMaterial3 ? 24.0 : 16.0;
return ButtonStyleButton.scaledPadding(
EdgeInsets.symmetric(horizontal: padding1x),
EdgeInsets.symmetric(horizontal: padding1x / 2),
EdgeInsets.symmetric(horizontal: padding1x / 2 / 2),
const EdgeInsets.symmetric(horizontal: 16),
const EdgeInsets.symmetric(horizontal: 8),
const EdgeInsets.symmetric(horizontal: 4),
MediaQuery.textScaleFactorOf(context),
);
}
Expand Down Expand Up @@ -429,23 +424,6 @@ class _OutlinedButtonWithIcon extends OutlinedButton {
clipBehavior: clipBehavior ?? Clip.none,
child: _OutlinedButtonWithIconChild(icon: icon, label: label),
);

@override
ButtonStyle defaultStyleOf(BuildContext context) {
final bool useMaterial3 = Theme.of(context).useMaterial3;
if (!useMaterial3) {
return super.defaultStyleOf(context);
}
final EdgeInsetsGeometry scaledPadding = ButtonStyleButton.scaledPadding(
const EdgeInsetsDirectional.fromSTEB(16, 0, 24, 0),
const EdgeInsetsDirectional.fromSTEB(8, 0, 12, 0),
const EdgeInsetsDirectional.fromSTEB(4, 0, 6, 0),
MediaQuery.textScaleFactorOf(context),
);
return super.defaultStyleOf(context).copyWith(
padding: MaterialStatePropertyAll<EdgeInsetsGeometry>(scaledPadding),
);
}
}

class _OutlinedButtonWithIconChild extends StatelessWidget {
Expand Down
13 changes: 4 additions & 9 deletions packages/flutter/lib/src/material/text_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ class TextButton extends ButtonStyleButton {
/// * `shadowColor` - Theme.shadowColor
/// * `elevation` - 0
/// * `padding`
/// * `textScaleFactor <= 1` - (horizontal(12), vertical(8))
/// * `textScaleFactor <= 1` - all(8)
/// * `1 < textScaleFactor <= 2` - lerp(all(8), horizontal(8))
/// * `2 < textScaleFactor <= 3` - lerp(horizontal(8), horizontal(4))
/// * `3 < textScaleFactor` - horizontal(4)
Expand Down Expand Up @@ -320,7 +320,7 @@ class TextButton extends ButtonStyleButton {
/// * `surfaceTintColor` - null
/// * `elevation` - 0
/// * `padding`
/// * `textScaleFactor <= 1` - lerp(horizontal(12), horizontal(4))
/// * `textScaleFactor <= 1` - all(8)
/// * `1 < textScaleFactor <= 2` - lerp(all(8), horizontal(8))
/// * `2 < textScaleFactor <= 3` - lerp(horizontal(8), horizontal(4))
/// * `3 < textScaleFactor` - horizontal(4)
Expand All @@ -338,9 +338,6 @@ class TextButton extends ButtonStyleButton {
/// * `enableFeedback` - true
/// * `alignment` - Alignment.center
/// * `splashFactory` - Theme.splashFactory
///
/// For the [TextButton.icon] factory, the end (generally the right) value of
/// [padding] is increased from 12 to 16.
/// {@endtemplate}
@override
ButtonStyle defaultStyleOf(BuildContext context) {
Expand Down Expand Up @@ -381,9 +378,8 @@ class TextButton extends ButtonStyleButton {
}

EdgeInsetsGeometry _scaledPadding(BuildContext context) {
final bool useMaterial3 = Theme.of(context).useMaterial3;
return ButtonStyleButton.scaledPadding(
useMaterial3 ? const EdgeInsets.symmetric(horizontal: 12, vertical: 8) : const EdgeInsets.all(8),
const EdgeInsets.all(8),
const EdgeInsets.symmetric(horizontal: 8),
const EdgeInsets.symmetric(horizontal: 4),
MediaQuery.textScaleFactorOf(context),
Expand Down Expand Up @@ -495,9 +491,8 @@ class _TextButtonWithIcon extends TextButton {

@override
ButtonStyle defaultStyleOf(BuildContext context) {
final bool useMaterial3 = Theme.of(context).useMaterial3;
final EdgeInsetsGeometry scaledPadding = ButtonStyleButton.scaledPadding(
useMaterial3 ? const EdgeInsetsDirectional.fromSTEB(12, 8, 16, 8) : const EdgeInsets.all(8),
const EdgeInsets.all(8),
const EdgeInsets.symmetric(horizontal: 4),
const EdgeInsets.symmetric(horizontal: 4),
MediaQuery.textScaleFactorOf(context),
Expand Down
53 changes: 0 additions & 53 deletions packages/flutter/test/material/elevated_button_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1147,59 +1147,6 @@ void main() {
expect(paddingWidget.padding, const EdgeInsets.all(22));
});

testWidgets('M3 ElevatedButton has correct padding', (WidgetTester tester) async {
final Key key = UniqueKey();
await tester.pumpWidget(
MaterialApp(
theme: ThemeData.from(colorScheme: const ColorScheme.light(), useMaterial3: true),
home: Scaffold(
body: Center(
child: ElevatedButton(
key: key,
onPressed: () {},
child: const Text('ElevatedButton'),
),
),
),
),
);

final Padding paddingWidget = tester.widget<Padding>(
find.descendant(
of: find.byKey(key),
matching: find.byType(Padding),
),
);
expect(paddingWidget.padding, const EdgeInsets.symmetric(horizontal: 24));
});

testWidgets('M3 ElevatedButton.icon has correct padding', (WidgetTester tester) async {
final Key key = UniqueKey();
await tester.pumpWidget(
MaterialApp(
theme: ThemeData.from(colorScheme: const ColorScheme.light(), useMaterial3: true),
home: Scaffold(
body: Center(
child: ElevatedButton.icon(
key: key,
icon: const Icon(Icons.favorite),
onPressed: () {},
label: const Text('ElevatedButton'),
),
),
),
),
);

final Padding paddingWidget = tester.widget<Padding>(
find.descendant(
of: find.byKey(key),
matching: find.byType(Padding),
),
);
expect(paddingWidget.padding, const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 24.0, 0.0));
});

testWidgets('Elevated buttons animate elevation before color on disable', (WidgetTester tester) async {
// This is a regression test for https://github.com/flutter/flutter/issues/387

Expand Down
53 changes: 0 additions & 53 deletions packages/flutter/test/material/filled_button_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1224,59 +1224,6 @@ void main() {
expect(paddingWidget.padding, const EdgeInsets.all(22));
});

testWidgets('M3 FilledButton has correct padding', (WidgetTester tester) async {
final Key key = UniqueKey();
await tester.pumpWidget(
MaterialApp(
theme: ThemeData.from(colorScheme: const ColorScheme.light(), useMaterial3: true),
home: Scaffold(
body: Center(
child: ElevatedButton(
key: key,
onPressed: () {},
child: const Text('FilledButton'),
),
),
),
),
);

final Padding paddingWidget = tester.widget<Padding>(
find.descendant(
of: find.byKey(key),
matching: find.byType(Padding),
),
);
expect(paddingWidget.padding, const EdgeInsets.symmetric(horizontal: 24));
});

testWidgets('M3 FilledButton.icon has correct padding', (WidgetTester tester) async {
final Key key = UniqueKey();
await tester.pumpWidget(
MaterialApp(
theme: ThemeData.from(colorScheme: const ColorScheme.light(), useMaterial3: true),
home: Scaffold(
body: Center(
child: FilledButton.icon(
key: key,
icon: const Icon(Icons.favorite),
onPressed: () {},
label: const Text('ElevatedButton'),
),
),
),
),
);

final Padding paddingWidget = tester.widget<Padding>(
find.descendant(
of: find.byKey(key),
matching: find.byType(Padding),
),
);
expect(paddingWidget.padding, const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 24.0, 0.0));
});

testWidgets('By default, FilledButton shape outline is defined by shape.side', (WidgetTester tester) async {
const Color borderColor = Color(0xff4caf50);
await tester.pumpWidget(
Expand Down
Loading

0 comments on commit f22280a

Please sign in to comment.