本記事ではTextFieldを使ったテキスト入力欄を作成する方法を紹介します。
参考:Create and style a text field
はじめに
Flutterにおいて、AndroidではEditTextクラス、iOSではUITextFieldクラスに該当するのがTextFiled/TextFormFieldクラスです。このクラスでは、ユーザがキーボード入力などによって文字を入力できるWidgetを構成します。
TextField
最も一般的なWidgetがTextFiledです。デフォルトで下線が表示されますが、decorationプロパティを使って見た目を変更することができます。decorationにnullを設定すると装飾を無しに指定できますが、完全に見えなくなってしまうのでnullを指定するケースはほとんど無いと思います。
TextField(
decoration: InputDecoration(
border: OutlineInputBorder(),
icon: Icon(Icons.add_shopping_cart), // 画像を指定
hintText: '検索したい内容を入力してください', // ヒントを表示する
),
),
文字の更新イベントを検知したい場合は、Handle changes to a text fieldを参考にしてください。

TextFormField
FormFieldクラスを継承したTextFormFieldクラスでは、入力された文字列のチェック(validation)などを行うことができます。
TextFormField(
decoration: const InputDecoration(
border: UnderlineInputBorder(),
labelText: 'メールアドレスを入力してください',
),
onSaved: (String? value) {
// ユーザが決定した際に呼ばれる
debugPrint('onSaved');
},
autovalidateMode: AutovalidateMode.onUserInteraction, // ユーザ入力でvalidationを行う
validator: (String? value) {
return (value != null && !value.contains('@')) ? 'メールアドレスには@が必要です' : null;
},
)

コメントを残す