Commit de966121 authored by Adam Barth's avatar Adam Barth

Merge pull request #714 from abarth/stack_squish

Stack squishes positioned elements near the edge
parents d2ca2f26 f7aa8323
...@@ -76,6 +76,8 @@ class CardCollectionApp extends App { ...@@ -76,6 +76,8 @@ class CardCollectionApp extends App {
// background (text and icons) will just be clipped, not resized. // background (text and icons) will just be clipped, not resized.
Widget background = new Positioned( Widget background = new Positioned(
top: 0.0, top: 0.0,
right: 0.0,
bottom: 0.0,
left: 0.0, left: 0.0,
child: new Container( child: new Container(
margin: const EdgeDims.all(4.0), margin: const EdgeDims.all(4.0),
......
...@@ -146,29 +146,19 @@ class RenderStack extends RenderBox with ContainerRenderObjectMixin<RenderBox, S ...@@ -146,29 +146,19 @@ class RenderStack extends RenderBox with ContainerRenderObjectMixin<RenderBox, S
assert(size.width == constraints.constrainWidth(width)); assert(size.width == constraints.constrainWidth(width));
assert(size.height == constraints.constrainHeight(height)); assert(size.height == constraints.constrainHeight(height));
BoxConstraints innerConstraints = new BoxConstraints.loose(size);
child = firstChild; child = firstChild;
while (child != null) { while (child != null) {
assert(child.parentData is StackParentData); assert(child.parentData is StackParentData);
final StackParentData childData = child.parentData; final StackParentData childData = child.parentData;
if (childData.isPositioned) { if (childData.isPositioned) {
BoxConstraints childConstraints = innerConstraints; BoxConstraints childConstraints = const BoxConstraints();
if (childData.left != null && childData.right != null) if (childData.left != null && childData.right != null)
childConstraints = childConstraints.applyWidth(size.width - childData.right - childData.left); childConstraints = childConstraints.applyWidth(size.width - childData.right - childData.left);
else if (childData.left != null)
childConstraints = childConstraints.applyMaxWidth(size.width - childData.left);
else if (childData.right != null)
childConstraints = childConstraints.applyMaxWidth(size.width - childData.right);
if (childData.top != null && childData.bottom != null) if (childData.top != null && childData.bottom != null)
childConstraints = childConstraints.applyHeight(size.height - childData.bottom - childData.top); childConstraints = childConstraints.applyHeight(size.height - childData.bottom - childData.top);
else if (childData.top != null)
childConstraints = childConstraints.applyMaxHeight(size.height - childData.top);
else if (childData.bottom != null)
childConstraints = childConstraints.applyMaxHeight(size.width - childData.bottom);
child.layout(childConstraints, parentUsesSize: true); child.layout(childConstraints, parentUsesSize: true);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment