layout method

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

Implementation

@override
void layout(BoxConstraints constraints) {
  super.layout(constraints);

  final targetWidth = _resolveDimension(width)?.toDouble();
  final targetHeight = _resolveDimension(height)?.toDouble();

  final childConstraints = BoxConstraints(
    minWidth: targetWidth ?? constraints.minWidth,
    maxWidth: targetWidth ?? constraints.maxWidth,
    minHeight: targetHeight ?? constraints.minHeight,
    maxHeight: targetHeight ?? constraints.maxHeight,
  );

  _child?.layout(childConstraints);

  final rendered = _constrainContent(
    _child?.paint() ?? '',
    width: targetWidth?.toInt(),
    height: targetHeight?.toInt(),
  );
  _lastPaint = rendered;

  final measured = constraints.constrain(
    Size(
      targetWidth ?? _child?.size.width ?? 0,
      targetHeight ?? _child?.size.height ?? 0,
    ),
  );

  size = constraints.constrain(Size(measured.width, measured.height));
}