代码之家  ›  专栏  ›  技术社区  ›  Govaadiyo

正确验证表单小部件中的TextFormField

  •  0
  • Govaadiyo  · 技术社区  · 7 年前

    而不是分别编写每个 TextFormField

    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;
      }
    

    问题是当任何验证失败时,每个验证都会出错 而不是错误应该显示在 文本窗体域 那是失败的。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Harsha pulikollu    7 年前

    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,
          )