Flutter:仅验证一个TextFormField

时间:2020-06-12 02:31:19

标签: flutter

我正在使用Flutter构建用户注册表单。我需要实现以下目标:-

  1. 要求用户输入他们首选的用户ID

  2. TextFormField 的末尾添加一个按钮,以便用户可以验证是否已使用 User ID

  3. 单击该按钮时,它将调用验证器函数以仅验证用户ID (而不验证表单中的任何其他字段)

  4. 无论使用情况是否单击“验证”按钮,提交表单时,用户ID 仍将得到验证。

我尝试了许多方法,似乎唯一的解决方案是将User ID和其他所有形式拆分为单独的形式。

我可以知道是否有比这更好的解决方案?

1 个答案:

答案 0 :(得分:0)

  1. 创建一个GlobalKey
var _formKey = GlobalKey<FormState>();    
  1. _formKey添加到您的TextFormField中,表单小部件应仅添加到您要验证的字段。
Padding(
  padding: EdgeInsets.only(left: 30.0, right: 30.0, bottom: 10.0),
  child: Form(
    key: _formKey,
    child: TextFormField(
      maxLines: 1,
      style: TextStyle(decoration: TextDecoration.none, color: Colors.grey[900], fontSize: 14.0, fontFamily: 'Montserrat', fontWeight: FontWeight.w500, letterSpacing: 0.0,),
      decoration: InputDecoration(labelText: 'Type here...', alignLabelWithHint: true, border: OutlineInputBorder(borderRadius: BorderRadius.circular(5.0),)),
      validator: (_post) => _post.toString().trim().length == 0 ? "Empty text" : null,
      onSaved: (_post) => _postText = _post.toString().trim(),
    ),
  ),
)
  1. 然后任何按钮的OnClick调用Validate函数。
void _validateInputs() {
    if (_formKey.currentState.validate()) {
      _formKey.currentState.save();
       // Call your Method
    }
  }