我已经制作了一个程序,用户可以在其中创建一个帐户,但是我对文本字段设置了一些限制(比如对于名字,它只能接受一个由a或a组成的字符串)。
如果输入错误(比如用户输入"John1"),我希望在textfield下面显示一个"error text“,但是我不知道如何做到这一点。简单的方法是使用onEditingComplete,但这只有当用户点击键盘上的“完成”键时才能工作。
当焦点从一个文本字段更改到另一个文本字段时,是否有一种方法使“错误文本”出现?
发布于 2020-05-05 05:34:58
您可以使用textfield的验证器属性来执行此操作。建议将您的字段封装在Form()
小部件中,然后使用FormTextField()
小部件实现验证,这将允许在文本字段底部显示错误,如果焦点更改或提交尝试。
示例:
TextFormField(
onSaved: (String value) {},
validator: (String value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
)
错误将出现在下面的红色字体中。
发布于 2020-05-05 07:07:26
如果希望在文本/值更改时显示错误文本,则可以这样做。
在TextField 'onChanged‘中,使用正则表达式验证用户输入并检查错误,如果使用TextField修饰'errorText’属性出现错误,则可以显示所需的错误。
Widget phoneNumberTextField() {
return Padding(
padding: EdgeInsets.fromLTRB(25, 10, 25, 10),
child: TextField(
style: TextStyle(color: Colors.white),
controller: _phoneNumberController,
maxLength: Constants.PhoneNumberTextFieldMaxLength,
onChanged: (value) {
_phoneNumberErrorText =
validatePhoneNumberTextField(_phoneNumberController.text);
_hasPhoneNumberError = _phoneNumberErrorText.isNotEmpty;
setState(() {});
},
keyboardType: TextInputType.number,
decoration: InputDecoration(
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.green, width: 1.0),
),
errorText: _hasPhoneNumberError ? _phoneNumberErrorText : null),
),
);
}
String validatePhoneNumberTextField(String text) {
String errorText = '';
if (text.length < 1) {
errorText = 'Phone Number should not be empty';
} else if (text.length != 10) {
errorText = 'Please enter valid phone number.';
}
return errorText;
}
https://stackoverflow.com/questions/61606278
复制相似问题