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

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