initialize method

void initialize({
  1. required bool newInstance,
})

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