questionToValidators function
List<ValidatorFunction>
questionToValidators(
- Question question
)
Implementation
List<ValidatorFunction> questionToValidators(s.Question question) {
final res = <ValidatorFunction>[];
if (question.isRequired == true) {
res.add(NonEmptyValidator.get);
}
if (question is s.Text) {
if (question.min?.oneOf.value.tryCastToNum() != null) {
res.add(Validators.min(question.min!.oneOf.value.tryCastToNum()));
}
if (question.max?.oneOf.value.tryCastToNum() != null) {
res.add(Validators.max(question.max!.oneOf.value.tryCastToNum()));
}
}
final validators = question.validators?.map((p) => p.realValidator).toList();
if (validators != null) {
for (var value in validators) {
if (value is s.Numericvalidator) {
res.add(Validators.number);
if (value.maxValue != null) {
res.add(Validators.max(value.maxValue));
}
if (value.minValue != null) {
res.add(Validators.min(value.minValue));
}
}
if (value is s.Textvalidator) {
if (value.maxLength != null) {
res.add(Validators.maxLength(value.maxLength!.toInt()));
}
if (value.minLength != null) {
res.add(Validators.minLength(value.minLength!.toInt()));
}
if (value.allowDigits != null) {
res.add((control) {
if (control.value is String) {
if (!value.allowDigits! &&
(control.value as String).contains('.')) {
return {'allowDigits': value.allowDigits};
}
}
return null;
});
}
}
if (value is s.Answercountvalidator) {
if (value.maxCount != null) {
res.add(Validators.maxLength(value.maxCount!.toInt()));
}
if (value.minCount != null) {
res.add(Validators.minLength(value.minCount!.toInt()));
}
}
if (value is s.Regexvalidator) {
if (value.regex != null) {
res.add(Validators.pattern(value.regex!));
}
}
if (value is s.Emailvalidator) {
res.add(Validators.email);
}
if (value is s.Expressionvalidator) {}
}
}
return res;
}