getWidgetSize method
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;
}