evaluate method
Implementation
@override
bool? evaluate(QuestionnaireState state) {
if (expressions.isEmpty) {
return true; // No conditions means it's always true
}
// Evaluate all sub-expressions
final evaluatedResults = expressions
.map((exp) => exp.evaluate(state))
.toList();
// Filter out nulls if you want to ignore expressions that couldn't be evaluated,
// or handle them as 'false' based on your specific logic.
// For simplicity, if any sub-expression is null, the composite evaluation will be null.
if (evaluatedResults.contains(null)) {
return null;
}
// All results are non-null booleans now
final boolResults = evaluatedResults.cast<bool>();
switch (logicType) {
case LogicType.and:
return boolResults.every((result) => result == true);
case LogicType.or:
return boolResults.any((result) => result == true);
}
}