私は Flutter (および Dart) を初めて使用しており、オブジェクトを編集するためのフォームを作成しようとしたときに、オンラインで例とチュートリアルを検索し、これら両方が使用されていることを知りました。
これら 2 つの違いは何ですか? どちらを使用すればよいですか?
ベストアンサー1
Form
保存、リセット、または検証操作が必要な を作成する場合は、を使用しますTextFormField
。それ以外の場合は、単純なユーザー入力キャプチャでTextField
十分です。
TextFormField
ウィジェットと統合されますForm
。
これは、FormField で TextField ウィジェットをラップする便利なウィジェットです。
先祖Form
は必須ではありません。フォームは、複数のフィールドを一度に保存、リセット、または検証する。
フォームなしで使用するには、コンストラクターに GlobalKey を渡し、GlobalKey.currentState を使用してフォーム フィールドを保存またはリセットします。
サンプル:
TextFormField(
autovalidateMode: AutovalidateMode.always
decoration: const InputDecoration(
icon: Icon(Icons.person),
hintText: 'What do people call you?',
labelText: 'Name *',
),
onSaved: (String value) {
// This optional block of code can be used to run
// code when the user saves the form.
},
validator: (String value) {
return value.contains('@') ? 'Do not use the @ char.' : null;
},
)
TextField
、これは統合されていない基になるテキスト フィールドですForm
。
テキスト フィールドは、onChanged
ユーザーがフィールド内のテキストを変更するたびにコールバックを呼び出します。ユーザーがフィールドへの入力を完了したことを示すと (たとえば、ソフト キーボードのボタンを押すなど)、テキスト フィールドはコールバックを呼び出しますonSubmitted
。