getWidgetSize method

Size getWidgetSize(
  1. Widget widget
)

Implementation

Size getWidgetSize(Widget widget) {
  Size childSize = Size.zero;
  switch (widget.runtimeType) {
    case Container:
      widget = (widget as Container);
      var marginSize = widget.margin?.collapsedSize;
      var constrainDimensions = widget.constraints
          ?.constrainDimensions(double.infinity, double.infinity);
      if (constrainDimensions != null) {
        childSize =
            Size(constrainDimensions.width, constrainDimensions.height);
      }
      if (marginSize != null) {
        childSize += marginSize.bottomRight(Offset.zero);
      }
      break;
    case SizedBox:
      widget = (widget as SizedBox);
      childSize = Size(widget.width ?? 0, widget.height ?? 0);
      break;
    case StrokeTextWidget:
      widget = (widget as StrokeTextWidget);
      childSize = widget.rect.size;
      break;
    case Image:
      widget = (widget as Image);
      childSize = Size(widget.width ?? 0, widget.height ?? 0);
      break;
    case Middle:
      widget = (widget as Middle);
      childSize = getWidgetSize(widget.child);
      break;
    case GestureDetector:
      widget = (widget as GestureDetector);
      if (widget.child != null) {
        childSize = getWidgetSize(widget.child!);
      }
      break;
    default:
      throw UnsupportedTypesError(runtimeType);
  }
  return childSize;
}