builder method
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;
}