【问题标题】:Flutter - Checking Validation of TextFormFieldFlutter - 检查 TextFormField 的验证
【发布时间】:2020-10-27 08:48:06
【问题描述】:

嗨,我是 Flutter 的新手。

如果 textformfield 为空,我使用 TextFormField 小部件来验证输入,并用 GlobalKey Form 小部件包装它。

我能问一下它是否可能只检查至少一个字段不为空然后它是有效的。

TextField A = 空 & TextField B = 非空 :: 有效
TextField A = 非空 & TextField B = 空 :: 有效
TextField A = 空 & TextField B = 空 :: 无效

在这种情况下,有两个 textformfield A 和 textformfield B 至少一个不能为空,所以它可以是 A 或 B。但如果两者都是空的,那么用户必须填写一个 textfield。我的目标是我的所有 textformfield 都有一个验证,但如果至少一个已填充或不为空,则可以。

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

                Form(
                key: _formKey,
                child: Column(children: [
                  TextFormField(validator: (value) {
                    if (value.isEmpty) {
                      return "Please Fill";
                    }
                  }),
                  TextFormField(validator: (value) {
                    if (value.isEmpty) {
                      return "Please Fill";
                    }
                  }),
                  RaisedButton(
                    child: Text("Submit"),
                    onPressed: () async {
                        if (_formKey.currentState.validate()) {
                          return;
                        }
                        _formKey.currentState.save();
                        //Some Codes
                      },
                  )
                ]),
              ),

我打算将其更改为 TextField 小部件并使用 setState({}) 检查是否至少 1 已填充但我不想使用 setState。有没有办法解决我的问题?谢谢

【问题讨论】:

    标签: flutter dart flutter-layout


    【解决方案1】:

    试试这个:

    final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
    
                    Form(
                    key: _formKey,
                    child: Column(children: [
                      TextFormField(validator: (value) {
                        if (value.isEmpty) {
                          return "Please Fill";
                        }
                        return null;
                      }),
                      TextFormField(validator: (value) {
                        if (value.isEmpty) {
                          return "Please Fill";
                        }
                        return null;
                      }),
                      RaisedButton(
                        child: Text("Submit"),
                        onPressed: () async {
                            if (_formKey.currentState.validate()) {
                              // If the form is valid, display a Snackbar.
                                Scaffold.of(context).showSnackBar(SnackBar(content: Text('Processing Data')));
                            }
                            _formKey.currentState.save();
                            //Some Codes
                          },
                      )
                    ]),
                  ),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-04
      • 2020-10-01
      • 2019-08-12
      • 2021-08-10
      • 2019-04-11
      • 2021-08-30
      • 2023-01-12
      • 2020-12-15
      相关资源
      最近更新 更多