跳至主要內容

新的 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