Событие onSaved
вызывается только при сохранении формы (вызов form.save()
).
Если вы хотите проверить значение перед отправкой формы, просто передайте значение вашему валидатору thisпуть:
validator: (val) => Validators().validateEmail(val)
и обновите ваш validateEmail
, чтобы принять параметр.
Также, если вы хотите удалить только конечные пробелы, используйте функцию trimRight () .
В качестве примера, это отлично работает на моей стороне:
class Validators {
static String validateEmail(String value) {
String pattern =
r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$';
RegExp regExp = new RegExp(pattern);
if (value == null || value.length <= 0) {
return "Email is Required";
} else if (!regExp.hasMatch(value)) {
return "Invalid Email";
} else {
return null;
}
}
}
TextFormField(
maxLines: 1,
inputFormatters: [LengthLimitingTextInputFormatter(128)],
validator: (val) => Validators.validateEmail(val.trimRight()),
onSaved: (val) => _currMember.email = val,
initialValue: _currMember.email,
),