shouldRenderField method
Implementation
bool shouldRenderField(Field field) {
if (field.hidden == true) return false;
if (field.conditionalOn != null) {
final conditional = field.conditionalOn!;
final conditionalField = conditional.field;
final valuesList = conditional.values;
// Only support 'label' or 'value' for conditionalValueKey
final conditionalValueKey = conditional.conditionalValueKey ?? 'value';
// Try to get operator from conditionalOn if present, else default to 'eq'
final operator = (conditional as dynamic).operator ?? 'eq';
final selectedValue = values[conditionalField];
final fieldOptions = options[conditionalField] ?? [];
// Find the selected option for the conditional field
final selectedOption = fieldOptions.cast<Option?>().firstWhere(
(option) => option?.value == selectedValue,
orElse: () => null,
);
dynamic selectedKeyValue;
if (selectedOption != null) {
if (conditionalValueKey == 'label') {
selectedKeyValue = selectedOption.label;
} else if (conditionalValueKey == 'value') {
selectedKeyValue = selectedOption.value;
} else {
selectedKeyValue = selectedValue;
}
} else {
selectedKeyValue = selectedValue;
}
if (operator == 'eq') {
return valuesList.contains(selectedKeyValue);
} else if (operator == 'neq') {
return !valuesList.contains(selectedKeyValue);
}
return false;
}
return true;
}