toMap method
Convert layout props to a map for serialization
Implementation
Map<String, dynamic> toMap() {
final map = <String, dynamic>{};
// Always include default width and height if not specified
map['width'] = width;
map['height'] = height;
// Add dimension properties
if (minWidth != null) map['minWidth'] = minWidth;
if (maxWidth != null) map['maxWidth'] = maxWidth;
if (minHeight != null) map['minHeight'] = minHeight;
if (maxHeight != null) map['maxHeight'] = maxHeight;
// Add margin properties
if (margin != null) map['margin'] = margin;
if (marginTop != null) map['marginTop'] = marginTop;
if (marginRight != null) map['marginRight'] = marginRight;
if (marginBottom != null) map['marginBottom'] = marginBottom;
if (marginLeft != null) map['marginLeft'] = marginLeft;
if (marginHorizontal != null) {
map['marginLeft'] = marginHorizontal;
map['marginRight'] = marginHorizontal;
}
if (marginVertical != null) {
map['marginTop'] = marginVertical;
map['marginBottom'] = marginVertical;
}
// Add padding properties
if (padding != null) map['padding'] = padding;
if (paddingTop != null) map['paddingTop'] = paddingTop;
if (paddingRight != null) map['paddingRight'] = paddingRight;
if (paddingBottom != null) map['paddingBottom'] = paddingBottom;
if (paddingLeft != null) map['paddingLeft'] = paddingLeft;
if (paddingHorizontal != null) {
map['paddingLeft'] = paddingHorizontal;
map['paddingRight'] = paddingHorizontal;
}
if (paddingVertical != null) {
map['paddingTop'] = paddingVertical;
map['paddingBottom'] = paddingVertical;
}
// Add position properties
if (position != null) map['position'] = position.toString().split('.').last;
// Add absolute layout properties if set
if (absoluteLayout != null) {
map.addAll(absoluteLayout!.toMap());
}
// Add transform properties
if (rotateInDegrees != null) map['rotateInDegrees'] = rotateInDegrees;
if (scale != null) map['scale'] = scale;
if (scaleX != null) map['scaleX'] = scaleX;
if (scaleY != null) map['scaleY'] = scaleY;
// Add flex properties
if (flexDirection != null) {
map['flexDirection'] = flexDirection.toString().split('.').last;
}
if (justifyContent != null) {
map['justifyContent'] = justifyContent.toString().split('.').last;
}
if (alignItems != null) {
map['alignItems'] = alignItems.toString().split('.').last;
}
if (alignSelf != null) {
map['alignSelf'] = alignSelf.toString().split('.').last;
}
if (alignContent != null) {
map['alignContent'] = alignContent.toString().split('.').last;
}
if (flexWrap != null) map['flexWrap'] = flexWrap.toString().split('.').last;
if (flex != null) map['flex'] = flex;
if (flexGrow != null) map['flexGrow'] = flexGrow;
if (flexShrink != null) map['flexShrink'] = flexShrink;
if (flexBasis != null) map['flexBasis'] = flexBasis;
// Add display and overflow properties
if (display != null) map['display'] = display.toString().split('.').last;
if (overflow != null) map['overflow'] = overflow.toString().split('.').last;
// Add direction property
if (direction != null) {
map['direction'] = direction.toString().split('.').last;
}
// Add modern layout properties
if (aspectRatio != null) map['aspectRatio'] = aspectRatio;
if (gap != null) map['gap'] = gap;
if (rowGap != null) map['rowGap'] = rowGap;
if (columnGap != null) map['columnGap'] = columnGap;
// Add border width (affects layout)
if (borderWidth != null) map['borderWidth'] = borderWidth;
return map;
}