performLayout method

  1. @override
Size performLayout(
  1. BoxConstraints constraints
)
override

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);
}