buildWidget method

  1. @override
Widget buildWidget(
  1. BuildContext context
)
override

build your widget here

Implementation

@override
Widget buildWidget(BuildContext context) {
  if (widget._controller.children == null ||
      widget._controller.children!.isEmpty) {
    return const SizedBox.shrink();
  }

  List<Widget> items = [];
  for (int i = 0; i < widget._controller.children!.length; i++) {
    Widget child = buildChild(widget._controller.children![i]);
    // this child is not marked as a FlexBox, so we force
    // it to be an Expanded by default as a child of this container
    if (!hasFlex(child)) {
      items.add(Expanded(child: child));
    } else {
      items.add(child);
    }
  }
  // add gap if needed
  items =
      BoxUtils.buildChildrenAndGap(widget._controller.gap, children: items);

  Widget boxWidget;
  if (widget.isVertical()) {
    boxWidget = flutter.Column(
      mainAxisSize: widget._controller.mainAxisSize ?? MainAxisSize.max,
      mainAxisAlignment: widget._controller.mainAxis,
      crossAxisAlignment: widget._controller.crossAxis,
      children: items,
    );
  } else {
    boxWidget = flutter.Row(
      mainAxisSize: widget._controller.mainAxisSize ?? MainAxisSize.max,
      mainAxisAlignment: widget._controller.mainAxis,
      crossAxisAlignment: widget._controller.crossAxis,
      children: items,
    );
  }
  // when FlexRow doesn't get the cross axis constraint from its parent, we
  // can calculate by its children's dimension (if at least 1 is set) and set
  // the constraint. This way if any children without sizes will work
  if (widget._controller.crossAxisConstraint ==
      CrossAxisConstraint.largestChild) {
    boxWidget = widget.isVertical()
        ? IntrinsicWidth(child: boxWidget)
        : IntrinsicHeight(child: boxWidget);
  }

  Widget rtn = StudioDebugger()
      .assertFlexBoxHasBoundedDimension(boxWidget, widget.isVertical());
  return BoxLayoutWrapper(boxWidget: rtn, controller: widget._controller);
}