<

新しいフォーム、FormField 自動検証 API

まとめ

以前の自動検証 APIFormFormFieldウィジェットは自動検証のタイミングを制御できませんでした が起こるはずです。したがって、これらのウィジェットの自動検証は ウィジェットが最初に作成されたとき、最初のビルド時に常に発生しました ユーザーには表示されますが、制御することはできませんでした 自動検証がいつ行われるか。

コンテクスト

元の API では開発者による変更が許可されていないため 次の場合にのみ検証する自動検証動作 ユーザーがフォームフィールドを操作するため、新しい API を追加しました 開発者が希望どおりに構成できるようにする のために動作する自動検証FormFormFieldウィジェット。

変更内容の説明

次の変更が加えられました。

  • autovalidateパラメータは廃止されました。
  • という新しいパラメータautovalidateMode、 からの値を受け入れる EnumAutovalidateModeEnumクラスが追加されました。

移行ガイド

新しい自動検証 API に移行するには、次のことを行う必要があります。 非推奨の使用法を置き換えるautovalidate新しいパラメータへのautovalidateModeパラメータ。 以前と同じ動作が必要な場合は、次を使用できます。autovalidateMode = AutovalidateMode.always。 これにより、FormFormFieldウィジェット自動 最初のビルド時と変更されるたびに検証します。

移行前のコード:

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

移行後のコード:

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 ドキュメント:

  • AutovalidateMode

関連する問題:

  • 問題 56363
  • 問題 18885
  • 問題 15404
  • 問題 36154
  • 問題 48876

関連する PR:

  • PR 56365:FormField は、次の場合にのみ自動検証する必要があります。 内容が変更されました
  • PR 59766: FormField は、次の場合にのみ自動検証される必要があります。 内容が変更されました (修理済み)