builder method

Widget builder(
  1. BuildContext context,
  2. BoxConstraints constraints
)

Implementation

Widget builder(BuildContext context, BoxConstraints constraints)
{
  // Set Build Constraints in the [WidgetModel]
  setConstraints(constraints);

  // Check if widget is visible before wasting resources on building it
  if ((widget.model.children == null) || ((!widget.model.visible))) return Offstage();

  List<Widget> children = [];
  widget.model.children!.forEach((model)
  {
    if (model is IViewableWidget) {
      children.add((model as IViewableWidget).getView());
    }
  });
  if (children.isEmpty) children.add(Container());

  // Center
  dynamic view = children.length == 1 ? children[0] : Column(children: children, crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.max);

  // Close Keyboard
  //final gesture = GestureDetector(onTap: () => WidgetModel.unfocus(), child: view);

  // Detect Exit
  final willpop = WillPopScope(onWillPop: quit, child: view);

  /// Busy / Loading Indicator
  if (busy == null) busy = BUSY.BusyView(BUSY.BusyModel(widget.model, visible: widget.model.busy, observable: widget.model.busyObservable));

  view = Stack(children: [willpop, Center(child: busy)]);

  // Constrained
  if (widget.model.hasSizing)
  {
    var constraints = widget.model.getConstraints();
    view = ConstrainedBox(child: view, constraints: BoxConstraints(
    minHeight: constraints.minHeight!, maxHeight: constraints.maxHeight!,
        minWidth: constraints.minWidth!, maxWidth: constraints.maxWidth!));
  }

  return view;
}