buildRow static method

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

Build a Row widget with layout properties from FlyStyle

Implementation

static Widget buildRow(
  BuildContext context,
  FlyStyle style,
  List<Widget> children,
) {
  // Check if direct Flutter API parameters are provided
  final rowParams = style.row as RowParams?;

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

  if (rowParams != null) {
    // Use direct Flutter API parameters
    mainAxisAlignment =
        rowParams.mainAxisAlignment ??
        resolveMainAxisAlignment(style.justify);
    crossAxisAlignment =
        rowParams.crossAxisAlignment ??
        resolveCrossAxisAlignment(style.items);
    mainAxisSize =
        rowParams.mainAxisSize ??
        (style.inline == true ? MainAxisSize.min : MainAxisSize.max);
    textBaseline = rowParams.textBaseline;
    textDirection =
        rowParams.textDirection ??
        (style.reverse == true ? TextDirection.rtl : TextDirection.ltr);
    verticalDirection = rowParams.verticalDirection ?? 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 = style.reverse == true
        ? TextDirection.rtl
        : TextDirection.ltr;
    verticalDirection = 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 Row(
    mainAxisAlignment: mainAxisAlignment,
    crossAxisAlignment: crossAxisAlignment,
    mainAxisSize: mainAxisSize,
    textBaseline: textBaseline,
    textDirection: textDirection,
    verticalDirection: verticalDirection,
    children: childrenWithGap,
  );
}