onMeasure method

  1. @override
Size onMeasure(
  1. double parentWidth,
  2. double parentHeight
)

Implementation

@override
Size onMeasure(double parentWidth, double parentHeight) {
  double w = parentWidth;
  double h = parentHeight;
  if (props.width != null) {
    w = props.width!.convert(parentWidth);
    double leftMargin = props.leftMargin.convert(parentWidth);
    double rightMargin = props.rightMargin.convert(parentWidth);
    if (w + leftMargin + rightMargin > parentWidth) {
      w = parentWidth - leftMargin - rightMargin;
    }
  } else {
    double leftMargin = props.leftMargin.convert(parentWidth);
    double rightMargin = props.rightMargin.convert(parentWidth);
    w = parentWidth - (leftMargin + rightMargin);
  }

  if (props.height != null) {
    h = props.height!.convert(parentHeight);
    double topMargin = props.topMargin.convert(parentHeight);
    double bottomMargin = props.bottomMargin.convert(parentHeight);
    if (h + topMargin + bottomMargin > parentHeight) {
      h = parentHeight - topMargin - bottomMargin;
    }
  } else {
    double topMargin = props.topMargin.convert(parentHeight);
    double bottomMargin = props.bottomMargin.convert(parentHeight);
    h = parentHeight - (topMargin + bottomMargin);
  }
  return Size(w, h);
}