layout method

  1. @override
void layout(
  1. BoxConstraints constraints
)
override

Implementation

@override
void layout(BoxConstraints constraints) {
  super.layout(constraints);
  final padLeft = _roundClamp(padding?.left ?? 0);
  final padRight = _roundClamp(padding?.right ?? 0);
  final padTop = _roundClamp(padding?.top ?? 0);
  final padBottom = _roundClamp(padding?.bottom ?? 0);
  final padH = padLeft + padRight;
  final padV = padTop + padBottom;

  final childConstraints = BoxConstraints(
    minWidth: math.max(0, constraints.minWidth - padH),
    maxWidth: math.max(0, constraints.maxWidth - padH),
    minHeight: math.max(0, constraints.minHeight - padV),
    maxHeight: math.max(0, constraints.maxHeight - padV),
  );

  final child = _child;
  if (child != null) {
    child.layout(childConstraints);
    child.offset = Offset(padLeft.toDouble(), padTop.toDouble());
  }

  size = constraints.constrain(
    Size(
      (child?.size.width ?? 0) + padH.toDouble(),
      (child?.size.height ?? 0) + padV.toDouble(),
    ),
  );

  final content = child?.paint() ?? '';
  final rendered = _renderContainerContent(
    contentStr: content,
    padding: padding,
    width: size.width.toInt(),
    height: size.height.toInt(),
  );
  _lastPaint = Layout.truncateLines(
    rendered,
    size.width.toInt(),
    ellipsis: '',
  );
  size = constraints.constrain(
    Size(
      Layout.getWidth(_lastPaint!).toDouble(),
      Layout.getHeight(_lastPaint!).toDouble(),
    ),
  );
}