除了编写每个TextFormField
的单独的validate方法之外,没有任何方法可以通过以下一种方法来管理。
String _isValidatedField(String strInputText) {
String pEmailChk =
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,}))$';
if (_conFirstName.text.isEmpty) {
return 'Please enter first name';
} else if (_conLastName.text.isEmpty) {
return 'Please enter last name';
} else if (_conUserName.text.isEmpty) {
return 'Please enter username';
} else if (_conEmailName.text.isEmpty) {
return 'Please enter email address';
} else if (RegExp(pEmailChk).hasMatch(_conEmailName.text) == false) {
return 'Please enter valid email addres';
}
else if (_conEmailName.text.length != 10) {
return 'Please enter valid phone number';
}
return null;
}
问题是,当任何验证失败时,每个TextFormField
都会发生错误,而不是在失败的特定TextFormField
上显示错误。
答案 0 :(得分:0)
TextformField具有验证器参数,您可以通过该参数来验证特定的文本表单字段
TextFormField(
key: new Key('email'),
decoration: new InputDecoration(labelText: 'Email'),
autocorrect: false,
validator: (val) => val.isEmpty ? 'Email can\'t be empty.' : null,
onSaved: (val) => _email = val,
)