isFieldRequired static method
bool
isFieldRequired({
- required FormFieldModel field,
- required Map<
String, dynamic> formData, - required List<
NestedContext> contexts,
Implementation
static bool isFieldRequired({
required FormFieldModel field,
required Map<String, dynamic> formData,
required List<NestedContext> contexts,
}) {
// Check if the field is hard-required
if (field.required == true) {
return true;
}
// If field has no validations, it's not required
if (field.validations == null || field.validations!.isEmpty) {
return false;
}
final requiredValidation = field.validations!.firstWhereOrNull(
(ValidationRule v) => v.type == ValidationRuleType.required,
);
if (requiredValidation != null) {
// Check the dependencies of the validation rule
if (requiredValidation.dependencies.isNotEmpty) {
var allDependenciesMet = true;
for (final dependency in requiredValidation.dependencies) {
final resolvedFieldPath = _resolveTemplatedFieldPath(
dependency.field,
contexts,
);
final dependencyValue = getNestedFormValue(
formData,
resolvedFieldPath,
);
final conditionMet = _evaluateCondition(
dependencyValue,
dependency.operator,
dependency.compareValue,
);
if (!conditionMet) {
allDependenciesMet = false;
break; // If any dependency fails, field is not required
}
}
if (!allDependenciesMet) {
return false; // Dependencies not met, field is not required
}
return true;
}
}
return false;
}