reland #105109 (#105588)

diff --git a/dev/tools/gen_defaults/lib/dialog_template.dart b/dev/tools/gen_defaults/lib/dialog_template.dart
index 62d5ab2..edeb132 100644
--- a/dev/tools/gen_defaults/lib/dialog_template.dart
+++ b/dev/tools/gen_defaults/lib/dialog_template.dart
@@ -34,6 +34,9 @@
 
   @override
   TextStyle? get contentTextStyle => ${textStyle("md.comp.dialog.supporting-text")};
+
+  @override
+  EdgeInsetsGeometry? get actionsPadding => const EdgeInsets.only(left: 24.0, right: 24.0, bottom: 24.0);
 }
 ''';
 }
diff --git a/packages/flutter/lib/src/material/dialog.dart b/packages/flutter/lib/src/material/dialog.dart
index 90fc842..38786c3 100644
--- a/packages/flutter/lib/src/material/dialog.dart
+++ b/packages/flutter/lib/src/material/dialog.dart
@@ -555,11 +555,10 @@
 
     if (actions != null) {
       final double spacing = (buttonPadding?.horizontal ?? 16) / 2;
-      final EdgeInsetsGeometry effetiveActionsPadding = (actionsPadding ?? EdgeInsets.zero).add(
-        theme.useMaterial3 ? const EdgeInsets.only(left: 24.0, right: 24.0, bottom: 24.0) : EdgeInsets.all(spacing),
-      );
       actionsWidget = Padding(
-        padding: effetiveActionsPadding,
+        padding: actionsPadding ?? dialogTheme.actionsPadding ?? (
+          theme.useMaterial3 ? defaults.actionsPadding! : defaults.actionsPadding!.add(EdgeInsets.all(spacing))
+        ),
         child: OverflowBar(
           alignment: actionsAlignment ?? MainAxisAlignment.end,
           spacing: spacing,
@@ -1205,6 +1204,9 @@
 
   @override
   TextStyle? get contentTextStyle => _textTheme.subtitle1;
+
+  @override
+  EdgeInsetsGeometry? get actionsPadding => EdgeInsets.zero;
 }
 
 // BEGIN GENERATED TOKEN PROPERTIES
@@ -1235,6 +1237,9 @@
 
   @override
   TextStyle? get contentTextStyle => _textTheme.bodyMedium;
+
+  @override
+  EdgeInsetsGeometry? get actionsPadding => const EdgeInsets.only(left: 24.0, right: 24.0, bottom: 24.0);
 }
 
 // END GENERATED TOKEN PROPERTIES
diff --git a/packages/flutter/lib/src/material/dialog_theme.dart b/packages/flutter/lib/src/material/dialog_theme.dart
index aa93e68..d18aa64 100644
--- a/packages/flutter/lib/src/material/dialog_theme.dart
+++ b/packages/flutter/lib/src/material/dialog_theme.dart
@@ -34,6 +34,7 @@
     this.alignment,
     this.titleTextStyle,
     this.contentTextStyle,
+    this.actionsPadding,
   });
 
   /// Overrides the default value for [Dialog.backgroundColor].
@@ -56,6 +57,9 @@
   /// [AlertDialog.content].
   final TextStyle? contentTextStyle;
 
+  /// Overrides the default value for [AlertDialog.actionsPadding].
+  final EdgeInsetsGeometry? actionsPadding;
+
   /// Creates a copy of this object but with the given fields replaced with the
   /// new values.
   DialogTheme copyWith({
@@ -65,6 +69,7 @@
     AlignmentGeometry? alignment,
     TextStyle? titleTextStyle,
     TextStyle? contentTextStyle,
+    EdgeInsetsGeometry? actionsPadding,
   }) {
     return DialogTheme(
       backgroundColor: backgroundColor ?? this.backgroundColor,
@@ -73,6 +78,7 @@
       alignment: alignment ?? this.alignment,
       titleTextStyle: titleTextStyle ?? this.titleTextStyle,
       contentTextStyle: contentTextStyle ?? this.contentTextStyle,
+      actionsPadding: actionsPadding ?? this.actionsPadding,
     );
   }
 
@@ -95,6 +101,7 @@
       alignment: AlignmentGeometry.lerp(a?.alignment, b?.alignment, t),
       titleTextStyle: TextStyle.lerp(a?.titleTextStyle, b?.titleTextStyle, t),
       contentTextStyle: TextStyle.lerp(a?.contentTextStyle, b?.contentTextStyle, t),
+      actionsPadding: EdgeInsetsGeometry.lerp(a?.actionsPadding, b?.actionsPadding, t),
     );
   }
 
@@ -115,7 +122,8 @@
         && other.shape == shape
         && other.alignment == alignment
         && other.titleTextStyle == titleTextStyle
-        && other.contentTextStyle == contentTextStyle;
+        && other.contentTextStyle == contentTextStyle
+        && other.actionsPadding == actionsPadding;
   }
 
   @override
@@ -127,5 +135,6 @@
     properties.add(DiagnosticsProperty<AlignmentGeometry>('alignment', alignment, defaultValue: null));
     properties.add(DiagnosticsProperty<TextStyle>('titleTextStyle', titleTextStyle, defaultValue: null));
     properties.add(DiagnosticsProperty<TextStyle>('contentTextStyle', contentTextStyle, defaultValue: null));
+    properties.add(DiagnosticsProperty<EdgeInsetsGeometry>('actionsPadding', actionsPadding, defaultValue: null));
   }
 }
diff --git a/packages/flutter/test/material/dialog_theme_test.dart b/packages/flutter/test/material/dialog_theme_test.dart
index a9d573e..7380f20 100644
--- a/packages/flutter/test/material/dialog_theme_test.dart
+++ b/packages/flutter/test/material/dialog_theme_test.dart
@@ -54,6 +54,7 @@
       alignment: Alignment.bottomLeft,
       titleTextStyle: TextStyle(color: Color(0xffffffff)),
       contentTextStyle: TextStyle(color: Color(0xff000000)),
+      actionsPadding: EdgeInsets.all(8.0),
     ).debugFillProperties(builder);
     final List<String> description = builder.properties
         .where((DiagnosticsNode n) => !n.isFiltered(DiagnosticLevel.info))
@@ -64,6 +65,7 @@
       'alignment: Alignment.bottomLeft',
       'titleTextStyle: TextStyle(inherit: true, color: Color(0xffffffff))',
       'contentTextStyle: TextStyle(inherit: true, color: Color(0xff000000))',
+      'actionsPadding: EdgeInsets.all(8.0)',
     ]);
   });