buildStack static method

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

Build a Stack widget with layout properties from FlyStyle

Implementation

static Widget buildStack(
  BuildContext context,
  FlyStyle style,
  List<Widget> children,
) {
  // Check if direct Flutter API parameters are provided
  final stackParams = style.stack as StackParams?;

  AlignmentGeometry alignment;
  TextDirection? textDirection;
  StackFit fit;
  Clip clipBehavior;

  if (stackParams != null) {
    // Use direct Flutter API parameters
    alignment = stackParams.alignment ?? AlignmentDirectional.topStart;
    textDirection = stackParams.textDirection;
    fit = stackParams.fit ?? StackFit.loose;
    clipBehavior = stackParams.clipBehavior ?? Clip.hardEdge;
  } else {
    // Use default values when no direct API parameters provided
    alignment = AlignmentDirectional.topStart;
    textDirection = null;
    fit = StackFit.loose;
    clipBehavior = Clip.hardEdge;
  }

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

  // Apply position properties to children
  final childrenWithPosition = applyPositionToChildren(
    context,
    childrenWithFlex,
  );

  // Note: For Stack, we don't apply gap using SizedBox like Column/Row
  // Stack children are positioned absolutely or use the stack's alignment

  return Stack(
    alignment: alignment,
    textDirection: textDirection,
    fit: fit,
    clipBehavior: clipBehavior,
    children: childrenWithPosition,
  );
}