protected override void performLayout() { base.performLayout(); RenderBox child = this.firstChild; List <float> xOffsets = new List <float>(); while (child != null) { FlexParentData childParentData = (FlexParentData)child.parentData; xOffsets.Add(childParentData.offset.dx); D.assert(child.parentData == childParentData); child = childParentData.nextSibling; } xOffsets.Add(this.size.width); this.onPerformLayout(xOffsets, this.size.width); }
protected override void performLayout() { _hasCheckedLayoutWidth = false; base.performLayout(); _hasCheckedLayoutWidth = true; if (size.width <= constraints.maxWidth) { base.performLayout(); } else { BoxConstraints childConstraints = constraints.copyWith(minWidth: 0.0f); RenderBox child = null; float currentHeight = 0.0f; switch (verticalDirection) { case VerticalDirection.down: child = firstChild; break; case VerticalDirection.up: child = lastChild; break; } while (child != null) { FlexParentData childParentData = child.parentData as FlexParentData; child.layout(childConstraints, parentUsesSize: true); switch (textDirection) { case TextDirection.ltr: switch (mainAxisAlignment) { case MainAxisAlignment.center: float midpoint = (constraints.maxWidth - child.size.width) / 2.0f; childParentData.offset = new Offset(midpoint, currentHeight); break; case MainAxisAlignment.end: childParentData.offset = new Offset(constraints.maxWidth - child.size.width, currentHeight); break; default: childParentData.offset = new Offset(0, currentHeight); break; } break; case TextDirection.rtl: switch (mainAxisAlignment) { case MainAxisAlignment.center: float midpoint = constraints.maxWidth / 2.0f - child.size.width / 2.0f; childParentData.offset = new Offset(midpoint, currentHeight); break; case MainAxisAlignment.end: childParentData.offset = new Offset(0, currentHeight); break; default: childParentData.offset = new Offset(constraints.maxWidth - child.size.width, currentHeight); break; } break; } currentHeight += child.size.height; switch (verticalDirection) { case VerticalDirection.down: child = childParentData.nextSibling; break; case VerticalDirection.up: child = childParentData.previousSibling; break; } if (overflowButtonSpacing != null && child != null) { currentHeight += overflowButtonSpacing ?? 0; } } size = constraints.constrain(new Size(constraints.maxWidth, currentHeight)); } }