跳至主要内容

新的 Form、FormField 自动验证 API

摘要

#

之前 FormFormField 组件的自动验证 API 无法控制自动验证何时发生。因此,这些组件的自动验证总是在第一次构建时(即组件首次对用户可见时)发生,并且您无法控制自动验证何时发生。

上下文

#

由于原始 API 不允许开发者更改自动验证行为(例如仅在用户与表单字段交互时进行验证),我们添加了新的 API,允许开发者配置他们希望 FormFormField 组件的自动验证如何工作。

变更描述

#

进行了以下更改

  • autovalidate 参数已弃用。
  • 添加了一个名为 autovalidateMode 的新参数,这是一个枚举,接受来自 AutovalidateMode 枚举类的值。

迁移指南

#

要迁移到新的自动验证 API,您需要将弃用的 autovalidate 参数替换为新的 autovalidateMode 参数。如果您希望保持与之前相同的行为,可以使用:autovalidateMode = AutovalidateMode.always。这将使您的 FormFormField 组件在第一次构建时以及每次发生更改时都进行自动验证。

迁移前的代码

dart
class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FormField(
      autovalidate: true,
      builder: (FormFieldState state) {
        return Container();
      },
    );
  }
}

迁移后的代码

dart
class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FormField(
      autovalidateMode: AutovalidateMode.always,
      builder: (FormFieldState state) {
        return Container();
      },
    );
  }
}

时间线

#

包含于版本:1.21.0-5.0.pre
稳定版发布:1.22

参考

#

API 文档

相关问题

相关 PR