首页 > 解决方案 > 如何验证值更改的文本字段?

问题描述

如何在其值更改时自动验证文本表单字段?

我试过了

bool _autoValidate = false;
TextFormField(
                autovalidate: _autoValidate ,
                onChanged: (value) {
                  setState(() {
                    _autoValidate = true;
                  });
                },
                validator: (value) {
                  if (value.length < 5) {
                    return 'False';
                  } else {
                    return 'True';
                  }
                },
              ),

但不起作用,TextFormField仍然没有显示验证错误。

我需要一种方法来打开对文本更改的验证。

标签: formsflutterdart

解决方案


Flutter 现在有一个 API,可以仅在内容更改时验证表单字段。您只需要使用autovalidateMode参数并将其设置为AutovalidateMode.onUserInteraction.

以下文本字段仅在用户更改其内容时才会生效:

    class HomeScreen extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(),
          body: Center(
            child: TextFormField(
              autovalidateMode: AutovalidateMode.onUserInteraction,
            ),
          ),
        );
      }
    }

有关何时验证的更多选项,请参阅AutovalidateMode文档。

此 API 现在可在最新的稳定频道上使用。让我知道它是否能解决您的问题。


推荐阅读