buildWrap static method
Build a Wrap widget with layout properties from FlyStyle
Implementation
static Widget buildWrap(
BuildContext context,
FlyStyle style,
List<Widget> children,
) {
// Check if direct Flutter API parameters are provided
final wrapParams = style.wrap as WrapParams?;
Axis direction;
WrapAlignment alignment;
double spacing;
WrapAlignment runAlignment;
double runSpacing;
WrapCrossAlignment crossAxisAlignment;
TextDirection? textDirection;
VerticalDirection verticalDirection;
Clip clipBehavior;
if (wrapParams != null) {
// Use direct Flutter API parameters
direction = wrapParams.direction ?? Axis.horizontal;
alignment = wrapParams.alignment ?? WrapAlignment.start;
spacing = wrapParams.spacing ?? resolveSpacing(context, style.gap);
runAlignment = wrapParams.runAlignment ?? WrapAlignment.start;
runSpacing = wrapParams.runSpacing ?? 0.0;
crossAxisAlignment =
wrapParams.crossAxisAlignment ?? WrapCrossAlignment.start;
textDirection = wrapParams.textDirection;
verticalDirection =
wrapParams.verticalDirection ??
(style.reverse == true
? VerticalDirection.up
: VerticalDirection.down);
clipBehavior = wrapParams.clipBehavior ?? Clip.none;
} else {
// Use utility method parameters - only supported properties
direction = Axis.horizontal;
alignment = WrapAlignment.start;
spacing = resolveSpacing(context, style.gap);
runAlignment = WrapAlignment.start;
runSpacing = 0.0;
crossAxisAlignment = WrapCrossAlignment.start;
textDirection = null;
verticalDirection = style.reverse == true
? VerticalDirection.up
: VerticalDirection.down;
clipBehavior = Clip.none;
}
// Apply flex properties to children first
final childrenWithFlex = applyFlexToChildren(context, children);
// Note: For Wrap, we don't apply gap using SizedBox like Column/Row
// The spacing is handled directly by the Wrap widget's spacing parameter
return Wrap(
direction: direction,
alignment: alignment,
spacing: spacing,
runAlignment: runAlignment,
runSpacing: runSpacing,
crossAxisAlignment: crossAxisAlignment,
textDirection: textDirection,
verticalDirection: verticalDirection,
clipBehavior: clipBehavior,
children: childrenWithFlex,
);
}