簡體   English   中英

Flutter - 檢查 TextFormField 的驗證

[英]Flutter - Checking Validation of TextFormField

嗨,我是 flutter 的新手。

如果 textformfield 為空,我使用 TextFormField 小部件來驗證輸入並用 GlobalKey Form 小部件包裝它。

我能問一下它是否可能只檢查至少一個字段不為空然后它是有效的。

TextField A = 空 & TextField B = 非空::有效
TextField A = 非空 & TextField B = empty::有效
TextField A = 空 & TextField B = 空::無效

在這種情況下,有兩個 textformfield A 和 textformfield B 至少一個不能為空,因此它可以是 A 或 B。但如果兩者都為空,則用戶必須填寫一個文本字段。 我的目標是我的所有 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。 有沒有辦法解決我的問題? 謝謝

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM