diff --git a/sky/packages/sky/lib/painting/box_painter.dart b/sky/packages/sky/lib/painting/box_painter.dart index 7fb94f5c715..0cb2efdf95b 100644 --- a/sky/packages/sky/lib/painting/box_painter.dart +++ b/sky/packages/sky/lib/painting/box_painter.dart @@ -45,6 +45,8 @@ class EdgeDims { /// The offset from the left final double left; + bool get isNonNegative => top >= 0.0 && right >= 0.0 && bottom >= 0.0 && left >= 0.0; + bool operator ==(other) { if (identical(this, other)) return true; diff --git a/sky/packages/sky/lib/src/rendering/shifted_box.dart b/sky/packages/sky/lib/src/rendering/shifted_box.dart index a7c32f66043..1376b836f1e 100644 --- a/sky/packages/sky/lib/src/rendering/shifted_box.dart +++ b/sky/packages/sky/lib/src/rendering/shifted_box.dart @@ -79,6 +79,7 @@ class RenderPadding extends RenderShiftedBox { EdgeDims get padding => _padding; void set padding (EdgeDims value) { assert(value != null); + assert(value.isNonNegative); if (_padding == value) return; _padding = value; diff --git a/sky/packages/sky/lib/src/widgets/basic.dart b/sky/packages/sky/lib/src/widgets/basic.dart index 956ad2000c4..b986c2ad16d 100644 --- a/sky/packages/sky/lib/src/widgets/basic.dart +++ b/sky/packages/sky/lib/src/widgets/basic.dart @@ -393,7 +393,10 @@ class Container extends Component { this.margin, this.padding, this.transform - }) : super(key: key); + }) : super(key: key) { + assert(margin == null || margin.isNonNegative); + assert(padding == null || padding.isNonNegative); + } final Widget child; final BoxConstraints constraints;