diff --git a/packages/flutter/lib/src/rendering/block.dart b/packages/flutter/lib/src/rendering/block.dart index 1b8515b6c7..154ea1e3da 100644 --- a/packages/flutter/lib/src/rendering/block.dart +++ b/packages/flutter/lib/src/rendering/block.dart @@ -157,7 +157,7 @@ class RenderBlock extends RenderBox while (child != null) { switch (mainAxis) { case Axis.horizontal: - extent += child.getMinIntrinsicWidth(innerConstraints); + extent += child.getMaxIntrinsicWidth(innerConstraints); break; case Axis.vertical: extent += child.getMinIntrinsicHeight(innerConstraints); @@ -206,7 +206,7 @@ class RenderBlock extends RenderBox case Axis.horizontal: return _getIntrinsicCrossAxis( constraints, - (RenderBox child, BoxConstraints innerConstraints) => child.getMinIntrinsicWidth(innerConstraints), + (RenderBox child, BoxConstraints innerConstraints) => child.getMinIntrinsicHeight(innerConstraints), constraints.constrainHeight ); case Axis.vertical: @@ -221,7 +221,7 @@ class RenderBlock extends RenderBox case Axis.horizontal: return _getIntrinsicCrossAxis( constraints, - (RenderBox child, BoxConstraints innerConstraints) => child.getMaxIntrinsicWidth(innerConstraints), + (RenderBox child, BoxConstraints innerConstraints) => child.getMaxIntrinsicHeight(innerConstraints), constraints.constrainHeight ); case Axis.vertical: diff --git a/packages/flutter/test/rendering/block_test.dart b/packages/flutter/test/rendering/block_test.dart index 69281b1fae..5ac789f585 100644 --- a/packages/flutter/test/rendering/block_test.dart +++ b/packages/flutter/test/rendering/block_test.dart @@ -30,11 +30,15 @@ void main() { expect(paragraph.getMaxIntrinsicHeight(unconstrained), equals(oneLineTextHeight)); expect(paragraph.getMaxIntrinsicHeight(constrained), equals(twoLinesTextHeight)); - RenderBox testBlock = new RenderBlock( + // test setup + RenderBlock testBlock = new RenderBlock( children: [ paragraph, ] ); + final BoxConstraints empty = new BoxConstraints.tight(Size.zero); + + // vertical block expect(testBlock.getMinIntrinsicWidth(unconstrained), equals(wrappedTextWidth)); expect(testBlock.getMinIntrinsicWidth(constrained), equals(wrappedTextWidth)); expect(testBlock.getMaxIntrinsicWidth(unconstrained), equals(textWidth)); @@ -43,8 +47,21 @@ void main() { expect(testBlock.getMinIntrinsicHeight(constrained), equals(twoLinesTextHeight)); expect(testBlock.getMaxIntrinsicHeight(unconstrained), equals(oneLineTextHeight)); expect(testBlock.getMaxIntrinsicHeight(constrained), equals(twoLinesTextHeight)); + expect(testBlock.getMinIntrinsicWidth(empty), equals(0.0)); + expect(testBlock.getMaxIntrinsicWidth(empty), equals(0.0)); + expect(testBlock.getMinIntrinsicHeight(empty), equals(0.0)); + expect(testBlock.getMaxIntrinsicHeight(empty), equals(0.0)); - final BoxConstraints empty = new BoxConstraints.tight(Size.zero); + // horizontal block + testBlock.mainAxis = Axis.horizontal; + expect(testBlock.getMinIntrinsicWidth(unconstrained), equals(textWidth)); + expect(testBlock.getMinIntrinsicWidth(constrained), equals(constrained.maxWidth)); + expect(testBlock.getMaxIntrinsicWidth(unconstrained), equals(textWidth)); + expect(testBlock.getMaxIntrinsicWidth(constrained), equals(constrained.maxWidth)); + expect(testBlock.getMinIntrinsicHeight(unconstrained), equals(oneLineTextHeight)); + expect(testBlock.getMinIntrinsicHeight(constrained), equals(oneLineTextHeight)); + expect(testBlock.getMaxIntrinsicHeight(unconstrained), equals(oneLineTextHeight)); + expect(testBlock.getMaxIntrinsicHeight(constrained), equals(oneLineTextHeight)); expect(testBlock.getMinIntrinsicWidth(empty), equals(0.0)); expect(testBlock.getMaxIntrinsicWidth(empty), equals(0.0)); expect(testBlock.getMinIntrinsicHeight(empty), equals(0.0));