initialize method
Prepares the form for filling: initializes the instances, preloads a
newInstance, picks the default language, fires the load actions
and evaluates every calculation and condition.
Port of initialize(boolean, InstanceInitializationFactory); the
factory is dropped because JavaRosa never uses it.
Implementation
void initialize({required bool newInstance}) {
for (final MapEntry(key: id, value: instance) in nonMainInstances.entries) {
if (instance is FormInstance) instance.initialize(id);
}
if (newInstance) preloadInstance(mainInstance.root);
final localizer = this.localizer;
if (localizer != null && localizer.locale == null) {
localizer.setToDefault();
}
final nested = elementsWithActionTriggeredByToplevelEvent;
if (newInstance) {
actionController
..triggerActionsFromEventNested(
FormEvents.odkInstanceFirstLoad,
nested,
this,
)
..triggerActionsFromEventNested(FormEvents.xformsReady, nested, this);
}
actionController.triggerActionsFromEventNested(
FormEvents.odkInstanceLoad,
nested,
this,
);
final evaluated = _dag.initializeTriggerables(
mainInstance,
evaluationContext,
const TreeReference.root(),
);
_dag.publishSummary('Form initialized', null, evaluated);
}