首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振-焦点变化时的场反应

颤振-焦点变化时的场反应
EN

Stack Overflow用户
提问于 2020-05-05 05:23:16
回答 2查看 1K关注 0票数 0

我已经制作了一个程序,用户可以在其中创建一个帐户,但是我对文本字段设置了一些限制(比如对于名字,它只能接受一个由a或a组成的字符串)。

如果输入错误(比如用户输入"John1"),我希望在textfield下面显示一个"error text“,但是我不知道如何做到这一点。简单的方法是使用onEditingComplete,但这只有当用户点击键盘上的“完成”键时才能工作。

当焦点从一个文本字段更改到另一个文本字段时,是否有一种方法使“错误文本”出现?

EN

回答 2

Stack Overflow用户

发布于 2020-05-05 05:34:58

您可以使用textfield的验证器属性来执行此操作。建议将您的字段封装在Form()小部件中,然后使用FormTextField()小部件实现验证,这将允许在文本字段底部显示错误,如果焦点更改或提交尝试。

示例:

代码语言:javascript
运行
复制
TextFormField(
  onSaved: (String value) {},
  validator: (String value) {
    if (value.isEmpty) {
     return 'Please enter some text';
    }
    return null;
  },
)

错误将出现在下面的红色字体中。

票数 0
EN

Stack Overflow用户

发布于 2020-05-05 07:07:26

如果希望在文本/值更改时显示错误文本,则可以这样做。

在TextField 'onChanged‘中,使用正则表达式验证用户输入并检查错误,如果使用TextField修饰'errorText’属性出现错误,则可以显示所需的错误。

代码语言:javascript
运行
复制
 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),
  ),
);

}

代码语言:javascript
运行
复制
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;

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61606278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档