validateValue method
Returns a EntityFieldInvalid if value is invalid for this EntityField configuration.
Implementation
EntityFieldInvalid? validateValue(
Object? value, {
String? fieldName,
Type? entityType,
}) {
var validator = this.validator;
if (validator != null) {
if (!validator(value)) {
return EntityFieldInvalid(
'validator',
value,
fieldName: fieldName,
entityType: entityType,
);
}
}
var regexp = this.regexp;
if (regexp != null) {
var s = value == null ? '' : value.toString();
var re = RegExp(regexp, dotAll: true);
var valid = re.hasMatch(s);
if (!valid) {
return EntityFieldInvalid(
'regexp(${re.pattern})',
value,
entityType: entityType,
fieldName: fieldName,
);
}
}
if (value != null) {
var maximum = this.maximum;
if (maximum != null) {
var invalid = false;
String? valueStr;
if (value is num) {
if (value > maximum) invalid = true;
} else if (value is BigInt) {
if (value > maximum.toBigInt()) invalid = true;
} else if (value is DynamicNumber) {
if (value > maximum.toDynamicNumber()) invalid = true;
} else if (value is String) {
if (value.length > maximum) invalid = true;
} else if (value is Iterable) {
if (value.length > maximum) {
invalid = true;
valueStr = '${value.runtimeTypeNameUnsafe}{length: ${value.length}';
}
}
if (invalid) {
valueStr ??= '$value';
return EntityFieldInvalid(
'maximum($maximum)',
value,
entityType: entityType,
fieldName: fieldName,
);
}
}
var minimum = this.minimum;
if (minimum != null) {
var invalid = false;
String? valueStr;
if (value is num) {
if (value < minimum) invalid = true;
} else if (value is BigInt) {
if (value < minimum.toBigInt()) invalid = true;
} else if (value is DynamicNumber) {
if (value < minimum.toDynamicNumber()) invalid = true;
} else if (value is String) {
if (value.length < minimum) invalid = true;
} else if (value is Iterable) {
if (value.length < minimum) {
invalid = true;
valueStr = '${value.runtimeTypeNameUnsafe}{length: ${value.length}';
}
}
if (invalid) {
valueStr ??= '$value';
return EntityFieldInvalid(
'minimum($minimum)',
value,
entityType: entityType,
fieldName: fieldName,
);
}
}
}
return null;
}