validate method

ValidateOutcome? validate({
  1. bool markCompleted = true,
})

Re-answers every relevant question with its current answer (running required and constraint checks); the first failure, or null when the form is valid. Port of FormDef.validate / TriggerableDag.validate.

Implementation

ValidateOutcome? validate({bool markCompleted = true}) {
  final controller = FormEntryController(FormEntryModel(this))
    ..jumpToIndex(FormIndex.beginningOfForm());
  FormEntryEvent event;
  while ((event = controller.stepToNextEvent()) != FormEntryEvent.endOfForm) {
    if (event != FormEntryEvent.question) continue;
    final index = controller.model.formIndex;
    final status = controller.answerQuestion(
      controller.model.questionPrompt().answerValue,
      index: index,
    );
    if (markCompleted && status != AnswerStatus.ok) {
      return ValidateOutcome(index, status);
    }
  }
  return null;
}