diff --git a/sdk/lib/rendering/flex.dart b/sdk/lib/rendering/flex.dart index 0a6573c7391..43726d3c2d0 100644 --- a/sdk/lib/rendering/flex.dart +++ b/sdk/lib/rendering/flex.dart @@ -33,6 +33,7 @@ enum FlexAlignItems { start, end, center, + stretch, } typedef double _ChildSizingFunction(RenderBox child, BoxConstraints constraints); @@ -288,8 +289,23 @@ class RenderFlex extends RenderBox with ContainerRenderObjectMixin 0) { totalFlex += child.parentData.flex; } else { - BoxConstraints innerConstraints = new BoxConstraints(maxHeight: constraints.maxHeight, - maxWidth: constraints.maxWidth); + BoxConstraints innerConstraints; + if (alignItems == FlexAlignItems.stretch) { + switch (_direction) { + case FlexDirection.horizontal: + innerConstraints = new BoxConstraints(maxWidth: constraints.maxWidth, + minHeight: constraints.minHeight, + maxHeight: constraints.maxHeight); + break; + case FlexDirection.vertical: + innerConstraints = new BoxConstraints(minWidth: constraints.minWidth, + maxWidth: constraints.maxWidth, + maxHeight: constraints.maxHeight); + break; + } + } else { + innerConstraints = constraints.loosen(); + } child.layout(innerConstraints, parentUsesSize: true); freeSpace -= _getMainSize(child); crossSize = math.max(crossSize, _getCrossSize(child)); @@ -372,6 +388,7 @@ class RenderFlex extends RenderBox with ContainerRenderObjectMixin