visibleQuestionIds function

Set<String> visibleQuestionIds(
  1. List<Question> questions,
  2. Map<String, dynamic> answers
)

Implementation

Set<String> visibleQuestionIds(List<Question> questions,Map<String,dynamic> answers){final byId={for(final q in questions)q.id:q};final memo=<String,bool>{};final active=<String>{};bool visible(Question q){if(memo.containsKey(q.id))return memo[q.id]!;if(!active.add(q.id))throw const FormatException('Conditional visibility cycle');final condition=q.visibleWhen;final result=condition==null?true:conditionMatches(condition,visible(byId[condition.questionId]??(throw const FormatException('Unknown visibility question')))?answers[condition.questionId]:null);active.remove(q.id);memo[q.id]=result;return result;}return questions.where(visible).map((q)=>q.id).toSet();}