简单的TextFormField验证器,但不返回任何内容

时间:2020-11-02 22:29:16

标签: flutter

我对如何使用验证程序有疑问。我看不到哪里弄错了。我写的代码是,当单击一个按钮时,它会弹出一个对话框,并要求用户输入名称。

viz3.score(X_test, y_test)
# 0.88

# verify this is the accuracy:

from sklearn.metrics import accuracy_score
accuracy_score(y_test, clf_lr.predict(X_test))
# 0.88

除了验证器部分,代码可以正常工作,完成我打算做的所有事情。 我在这里想念任何东西吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

为了使验证有效,您有两个选择,因为您没有触发验证,所以代码是正确的:

  1. 通过致电
if (_formKey.currentState.validate()) {}

这将触发验证

  1. 旧的解决方案是对autovalidate:true使用Form参数(在1.19之后弃用)。现在您需要使用AutovalidateMode,并且有一些选项,例如onUserInteractionalwaysdisabled。 Yu可以检查docs以获得更多信息。

如果您需要在用户单击按钮时进行验证,则可以使用第一个,而第二个是动态的,具体取决于您传递给“ Form”的参数

答案 1 :(得分:0)

您应该像这样在onPress Button中检查验证

final GlobalKey<FormState> _formKey = GlobalKey<FormState>();

FlatButton(
  onPressed: () {
    showDialog(
      context: context,
      builder: (_) => Dialog(
        child: Form(
          key: _formKey,
          child: Column(
            children: [
              TextFormField(
                key: _formKey,
                controller: roomController,
                validator: (String value) {
                  if (value.isEmpty) {
                    return 'Please create name';
                    } else if (NameList.contains(value)) {
                      return 'Existed';
                  }
                  return null;
                },
              ),
              RaisedButton(
                onPressed: () {
           if(_formKey.currentState.validate()){
           return //someting
                     }
              },
                child: Text('Create'),
              ),
            ],
          ),
        ),
      ),
    );
  },
  child: Text('Create'),
),