handle method
Handle the validation, the info
variable will contain the following:
info'rule'
= Validation rule i.e "min".
info'data'
= Data the user has passed into the validation.
info'message'
= Overriding message to be displayed for validation (optional).
Implementation
@override
bool handle(Map<String, dynamic> info) {
RegExp regExp = RegExp(signature + r':([0-9]+)');
String match = regExp.firstMatch(info['rule'])?.group(1) ?? "";
int intMatch = int.parse(match);
description =
"The $attribute must have a minimum length of $intMatch characters.";
textFieldMessage = "Must be a minimum of $intMatch characters.";
super.handle(info);
dynamic data = info['data'];
if (data is String) {
description =
"$attribute must be a maximum length of $intMatch characters.";
textFieldMessage = "Must be a maximum of $intMatch characters.";
super.handle(info);
return (data.length > intMatch);
}
if (data is int) {
description = "$attribute must be a maximum of $intMatch.";
textFieldMessage = "Must be a maximum of $intMatch.";
super.handle(info);
return (data > intMatch);
}
if (data is List) {
description = "$attribute must be a maximum of $intMatch.";
textFieldMessage = "Must be a maximum of $intMatch.";
super.handle(info);
return (data.length > intMatch);
}
if (data is Map) {
description = "$attribute must be a maximum of $intMatch.";
textFieldMessage = "Must be a maximum of $intMatch.";
super.handle(info);
return (data.length > intMatch);
}
if (data is double) {
description = "$attribute must be a maximum of $intMatch.";
textFieldMessage = "Must be a maximum of $intMatch.";
super.handle(info);
return (data > intMatch);
}
return false;
}