requiredValue<T> function
Creates a generic validator that fails when a value is null, an empty string, or an empty collection.
Works across arbitrary typed fields (BloomTypedFormField), file fields (BloomFileField),
and collections (BloomFieldArray). Returns message (or 'This field is required.' by default).
final categoryField = BloomTypedFormField<String?>(
initialValue: null,
validators: [requiredValue('Please select a category.')],
);
Implementation
String? Function(T?) requiredValue<T>([String? message]) => (v) {
if (v == null) return message ?? 'This field is required.';
if (v is String && v.trim().isEmpty) {
return message ?? 'This field is required.';
}
if (v is Iterable && v.isEmpty) {
return message ?? 'This field is required.';
}
if (v is Map && v.isEmpty) {
return message ?? 'This field is required.';
}
return null;
};