validate
ValidationResult<
- dynamic value
override
Implementation
@override
ValidationResult<int> validate(dynamic value) {
if (value == null) {
return Invalid({
_fieldName: ['is required']
});
}
int intValue;
if (value is int) {
intValue = value;
} else if (value is String) {
final parsed = int.tryParse(value);
if (parsed == null) {
return Invalid({
_fieldName: ['must be a number']
});
}
intValue = parsed;
} else if (value is num) {
intValue = value.toInt();
} else {
return Invalid({
_fieldName: ['must be a number']
});
}
final errors = <String>[];
for (final check in _checks) {
final error = check(intValue);
if (error.isNotEmpty) errors.add(error);
}
if (errors.isNotEmpty) {
return Invalid({_fieldName: errors});
}
return Valid(intValue);
}