toMap method

Map<String, dynamic> toMap()

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