buildWidget method
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);
}