getWidth method

double? getWidth({
  1. double? widthParent,
})

Implementation

double? getWidth({double? widthParent}) {
  if (!hasBoundedWidth) return null;

  double? myWidth;

  // width
  if (width != null) {
    myWidth = width;
  }

  // percentage width based on parent
  else if (widthPercentage != null && widthParent != null) {
    myWidth = ((widthPercentage! / 100) * widthParent);
  }

  // apply model constraints
  if (myWidth != null) {
    // must be greater than minWidth
    var minWidth = getMinWidth(widthParent: widthParent);
    if (minWidth != null && myWidth < minWidth) {
      myWidth = minWidth;
    }

    // must be greater than maxWidth
    var maxWidth = getMaxWidth(widthParent: widthParent);
    if (maxWidth != null && myWidth > maxWidth) {
      myWidth = maxWidth;
    }
  }

  // cannot be negative
  if (myWidth != null && myWidth.isNegative) {
    myWidth = 0;
  }

  return myWidth;
}