buildColumn static method

Widget buildColumn(
  1. BuildContext context,
  2. FlyStyle style,
  3. List<Widget> children
)

Build a Column widget with layout properties from FlyStyle

Implementation

static Widget buildColumn(
  BuildContext context,
  FlyStyle style,
  List<Widget> children,
) {
  // Check if direct Flutter API parameters are provided
  final colParams = style.col as ColParams?;

  MainAxisAlignment mainAxisAlignment;
  CrossAxisAlignment crossAxisAlignment;
  MainAxisSize mainAxisSize;
  TextBaseline? textBaseline;
  TextDirection? textDirection;
  VerticalDirection verticalDirection;

  if (colParams != null) {
    // Use direct Flutter API parameters
    mainAxisAlignment =
        colParams.mainAxisAlignment ??
        resolveMainAxisAlignment(style.justify);
    crossAxisAlignment =
        colParams.crossAxisAlignment ??
        resolveCrossAxisAlignment(style.items);
    mainAxisSize =
        colParams.mainAxisSize ??
        (style.inline == true ? MainAxisSize.min : MainAxisSize.max);
    textBaseline = colParams.textBaseline;
    textDirection = colParams.textDirection;
    verticalDirection =
        colParams.verticalDirection ??
        (style.reverse == true
            ? VerticalDirection.up
            : VerticalDirection.down);
  } else {
    // Use utility method parameters
    mainAxisAlignment = resolveMainAxisAlignment(style.justify);
    crossAxisAlignment = resolveCrossAxisAlignment(style.items);
    mainAxisSize = style.inline == true ? MainAxisSize.min : MainAxisSize.max;
    textBaseline = null;
    textDirection = null;
    verticalDirection = style.reverse == true
        ? VerticalDirection.up
        : VerticalDirection.down;
  }

  // Apply flex properties to children first
  final childrenWithFlex = applyFlexToChildren(context, children);

  // Apply gap if specified
  final gap = resolveSpacing(context, style.gap);
  final childrenWithGap = gap > 0
      ? applyGap(childrenWithFlex, gap)
      : childrenWithFlex;

  return Column(
    mainAxisAlignment: mainAxisAlignment,
    crossAxisAlignment: crossAxisAlignment,
    mainAxisSize: mainAxisSize,
    textBaseline: textBaseline,
    textDirection: textDirection,
    verticalDirection: verticalDirection,
    children: childrenWithGap,
  );
}