Make Decoration.padding non-nullable (#119581)
The default implementation returns EdgeInsets.zero, the ShapeDecoration subclass already makes it non-nullable, and there isn't any benefit to returning null as far as I can tell.
diff --git a/packages/flutter/lib/src/material/ink_decoration.dart b/packages/flutter/lib/src/material/ink_decoration.dart
index 8425c63..3b5a9c6 100644
--- a/packages/flutter/lib/src/material/ink_decoration.dart
+++ b/packages/flutter/lib/src/material/ink_decoration.dart
@@ -237,10 +237,10 @@
final double? height;
EdgeInsetsGeometry get _paddingIncludingDecoration {
- if (decoration == null || decoration!.padding == null) {
+ if (decoration == null) {
return padding ?? EdgeInsets.zero;
}
- final EdgeInsetsGeometry decorationPadding = decoration!.padding!;
+ final EdgeInsetsGeometry decorationPadding = decoration!.padding;
if (padding == null) {
return decorationPadding;
}
diff --git a/packages/flutter/lib/src/painting/box_decoration.dart b/packages/flutter/lib/src/painting/box_decoration.dart
index 15e103b..8bb448a 100644
--- a/packages/flutter/lib/src/painting/box_decoration.dart
+++ b/packages/flutter/lib/src/painting/box_decoration.dart
@@ -208,7 +208,7 @@
final BoxShape shape;
@override
- EdgeInsetsGeometry? get padding => border?.dimensions;
+ EdgeInsetsGeometry get padding => border?.dimensions ?? EdgeInsets.zero;
@override
Path getClipPath(Rect rect, TextDirection textDirection) {
diff --git a/packages/flutter/lib/src/painting/decoration.dart b/packages/flutter/lib/src/painting/decoration.dart
index 7a68bdf..2a52c03 100644
--- a/packages/flutter/lib/src/painting/decoration.dart
+++ b/packages/flutter/lib/src/painting/decoration.dart
@@ -59,7 +59,7 @@
/// [EdgeInsetsGeometry.resolve] to obtain an absolute [EdgeInsets]. (For
/// example, [BorderDirectional] will return an [EdgeInsetsDirectional] for
/// its [padding].)
- EdgeInsetsGeometry? get padding => EdgeInsets.zero;
+ EdgeInsetsGeometry get padding => EdgeInsets.zero;
/// Whether this decoration is complex enough to benefit from caching its painting.
bool get isComplex => false;
diff --git a/packages/flutter/lib/src/widgets/container.dart b/packages/flutter/lib/src/widgets/container.dart
index 5f1c505..5e3f65b 100644
--- a/packages/flutter/lib/src/widgets/container.dart
+++ b/packages/flutter/lib/src/widgets/container.dart
@@ -367,14 +367,14 @@
final Clip clipBehavior;
EdgeInsetsGeometry? get _paddingIncludingDecoration {
- if (decoration == null || decoration!.padding == null) {
+ if (decoration == null) {
return padding;
}
- final EdgeInsetsGeometry? decorationPadding = decoration!.padding;
+ final EdgeInsetsGeometry decorationPadding = decoration!.padding;
if (padding == null) {
return decorationPadding;
}
- return padding!.add(decorationPadding!);
+ return padding!.add(decorationPadding);
}
@override
diff --git a/packages/flutter/test/widgets/animated_container_test.dart b/packages/flutter/test/widgets/animated_container_test.dart
index ce9f17c..6d40f45 100644
--- a/packages/flutter/test/widgets/animated_container_test.dart
+++ b/packages/flutter/test/widgets/animated_container_test.dart
@@ -80,18 +80,24 @@
' │ PlatformAssetBundle#00000(), devicePixelRatio: 3.0, platform:\n'
' │ android)\n'
' │\n'
- ' └─child: RenderLimitedBox#00000\n'
+ ' └─child: RenderPadding#00000\n'
' │ parentData: <none> (can use size)\n'
' │ constraints: BoxConstraints(w=800.0, h=600.0)\n'
' │ size: Size(800.0, 600.0)\n'
- ' │ maxWidth: 0.0\n'
- ' │ maxHeight: 0.0\n'
+ ' │ padding: EdgeInsets.zero\n'
' │\n'
- ' └─child: RenderConstrainedBox#00000\n'
- ' parentData: <none> (can use size)\n'
- ' constraints: BoxConstraints(w=800.0, h=600.0)\n'
- ' size: Size(800.0, 600.0)\n'
- ' additionalConstraints: BoxConstraints(biggest)\n',
+ ' └─child: RenderLimitedBox#00000\n'
+ ' │ parentData: offset=Offset(0.0, 0.0) (can use size)\n'
+ ' │ constraints: BoxConstraints(w=800.0, h=600.0)\n'
+ ' │ size: Size(800.0, 600.0)\n'
+ ' │ maxWidth: 0.0\n'
+ ' │ maxHeight: 0.0\n'
+ ' │\n'
+ ' └─child: RenderConstrainedBox#00000\n'
+ ' parentData: <none> (can use size)\n'
+ ' constraints: BoxConstraints(w=800.0, h=600.0)\n'
+ ' size: Size(800.0, 600.0)\n'
+ ' additionalConstraints: BoxConstraints(biggest)\n',
),
);
});