如何验证其中有5个textfieldfom小部件的表单,在flutter中一个接一个地验证

时间:2018-06-29 13:54:34

标签: flutter

我正在尝试验证表单中的文本字段,并在其为空时显示警报。

我的问题是所有字段都在同时验证,但是我一次需要一个字段来验证

我当前的代码:

finiti = 0

1 个答案:

答案 0 :(得分:0)

需要指出的几件事。首先,验证器希望返回一个字符串,以便它可以在字段下方显示错误消息,但是您正在调用的方法m()不返回任何内容。参见validator documentation。例如:

new Text("Name"),
new TextFormField(
    validator: (str){
        if (str.isEmpty) {
           return "Please enter a name";
        }
    },),

如果要显示警报对话框而不是使用该字段下方的错误文本,请不要在每个TextFormField中使用validator也不在form.validate()中使用。这种方法存在的一个问题是您没有捕获任何TextFormField输入。为此,您可以使用onSaved属性,也可以为每个TextFormField分配一个GlobalKey。我将显示onSaved方法:

new TextFormField(
    onSaved: (value){
        setState(() {
           _name = value
        });
    },),

现在您已经在状态变量中设置了值,您可以将pressed()更改为以下内容:

pressed() {
  var form = formkey.currentState;
  form.save(); //Calling form.save() in turns calls all TextFormField's onSaved function
  var errorMsg = ""
  if (_name.isEmpty) {
     errorMsg += "Name is empty\n";
  }
  if (_last.isEmpty) {
     errorMsg += "Last is empty\n";
  }
  if (_add.isEmpty) {
     errorMsg += "Add is empty";
  }

  //Print debug if errorMsg is not empty
  if (!errorMsg.isEmpty) (
     debugPrint(errorMsg);
  }
}