evaluate method

  1. @override
bool? evaluate(
  1. QuestionnaireState state
)
override

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

  switch (logicType) {
    case LogicType.and:
      if (evaluatedResults.contains(false)) return false;
      return evaluatedResults.contains(null) ? null : true;
    case LogicType.or:
      if (evaluatedResults.contains(true)) return true;
      return evaluatedResults.contains(null) ? null : false;
  }
}