performLayout method
Hook for subclasses to perform layout within the given constraints.
Implementation
@override
Size performLayout(BoxConstraints constraints) {
final paddingWidget = widget as Padding;
final padding = paddingWidget.padding;
final doubleWidth = padding.left + padding.right;
final doubleHeight = padding.top + padding.bottom;
final childMinWidth = constraints.minWidth - doubleWidth < 0
? 0
: constraints.minWidth - doubleWidth;
final childMaxWidth = constraints.maxWidth == BoxConstraints.infinity
? BoxConstraints.infinity
: (constraints.maxWidth - doubleWidth < 0
? 0
: constraints.maxWidth - doubleWidth);
final childMinHeight = constraints.minHeight - doubleHeight < 0
? 0
: constraints.minHeight - doubleHeight;
final childMaxHeight = constraints.maxHeight == BoxConstraints.infinity
? BoxConstraints.infinity
: (constraints.maxHeight - doubleHeight < 0
? 0
: constraints.maxHeight - doubleHeight);
final childConstraints = BoxConstraints(
minWidth: childMinWidth,
maxWidth: childMaxWidth,
minHeight: childMinHeight,
maxHeight: childMaxHeight,
);
if (childElement != null) {
final childSize = childElement!.layout(childConstraints);
childElement!.relativeOffset = Offset(padding.left, padding.top);
return Size(
childSize.width + doubleWidth,
childSize.height + doubleHeight,
);
}
return Size(doubleWidth, doubleHeight);
}