buildRow static method
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,
);
}