説明
バグレポート
新しいフォーム、FormField 自動検証 API
まとめ
以前の自動検証 APIForm
とFormField
ウィジェットは自動検証のタイミングを制御できませんでした
が起こるはずです。したがって、これらのウィジェットの自動検証は
ウィジェットが最初に作成されたとき、最初のビルド時に常に発生しました
ユーザーには表示されますが、制御することはできませんでした
自動検証がいつ行われるか。
コンテクスト
元の API では開発者による変更が許可されていないため
次の場合にのみ検証する自動検証動作
ユーザーがフォームフィールドを操作するため、新しい API を追加しました
開発者が希望どおりに構成できるようにする
のために動作する自動検証Form
とFormField
ウィジェット。
変更内容の説明
次の変更が加えられました。
- の
autovalidate
パラメータは廃止されました。 - という新しいパラメータ
autovalidateMode
、 からの値を受け入れる EnumAutovalidateMode
Enumクラスが追加されました。
移行ガイド
新しい自動検証 API に移行するには、次のことを行う必要があります。
非推奨の使用法を置き換えるautovalidate
新しいパラメータへのautovalidateMode
パラメータ。
以前と同じ動作が必要な場合は、次を使用できます。autovalidateMode = AutovalidateMode.always
。
これにより、Form
とFormField
ウィジェット自動
最初のビルド時と変更されるたびに検証します。
移行前のコード:
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 は、次の場合にのみ自動検証される必要があります。 内容が変更されました (修理済み)