answerQuestion method
Answers the question at index (by default the current one) with
data if it is non-empty for a required question and satisfies the
constraint.
Implementation
AnswerStatus answerQuestion(
AnswerValue? data, {
FormIndex? index,
bool midSurvey = false,
}) {
index ??= model.formIndex;
final question = model.questionPrompt(index).question;
if (model.event(index) != FormEntryEvent.question) {
throw StateError('Non-Question object at the form index.');
}
final element = model.treeElement(index)!;
final complex = question.isComplex;
if (element.isRequired && data == null) {
return AnswerStatus.requiredButEmpty;
}
if (!complex && !_form.evaluateConstraint(index.reference!, data)) {
return AnswerStatus.constraintViolated;
}
if (!complex) {
_commitAnswer(element, index, data, midSurvey: midSurvey);
} else {
_form.copyItemsetAnswer(question, element, data);
}
return AnswerStatus.ok;
}