selectIsFieldRequired method
Implementation
bool selectIsFieldRequired(Field field) {
// If field has no validation, it's not required
if (field.validation == null) return false;
// Check if field is conditionally required
if (field.validation!.conditionalOn != null) {
var conditionalField = field.validation!.conditionalOn!.field;
var valuesList = field.validation!.conditionalOn!.values;
// Handle indexed fields by matching index from the current field name
if (field.name.contains('[')) {
final indexMatch = RegExp(r'\[(\d+)\]').firstMatch(field.name);
if (indexMatch != null) {
final fieldIndex = indexMatch.group(1);
conditionalField = conditionalField.replaceAll(
RegExp(r'\[\{index\}\]|\[\d+\]'), '[$fieldIndex]');
}
}
final conditionValue = values[conditionalField];
final conditionMatches =
valuesList.any((v) => v.toString() == conditionValue.toString());
if (conditionMatches) {
return field.validation!.required != false;
}
}
// Check if field is required by default
return field.validation!.required ?? false;
}