概述

#

之前 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