本エントリではパターン別にTextFormField
のデザイン設定を説明する。
TextFormFieldとは
TextFormField
はユーザーに文字列を入力してもらうためのテキストフォーム作成用ウィジェット。
TextField
を拡張しているクラスなので、TextField
で使用できるプロパティは全て使用できる。
TextFormField
のデザインを設定する場合はdecoration
プロパティにInputDecoration
を指定することで行う。
パターン別デザイン
デフォルト
デフォルトのデザインは以下の通り。そのままだと見にくいのでPadding
でラップしている。
ヒント文字あり
ヒント文字はTextFormField
を非選択状態でフォーム内に表示されている文字。
選択状態になり文字が入力されると非表示になる。
枠線あり
枠線はborder
プロパティにOutlineInputBorder()
を指定することで設定する。
背景色あり
背景色はfillColor
プロパティに色を指定し、filled
をtrue
に設定する。
選択時の枠線の色
focusedBorder
にOutlineInputBorder
を設定すると、テキストフォームを選択した際の枠線の色を設定できる。
OutlineInputBorder
のborderSide
にBorderSide()
を指定することで色を設定する。
ラベルテキストあり
ラベルテキストはテキストフォームを選択していない状態だとヒントテキストのような表示になる。 テキストフォームを選択すると枠上部にサイズが小さくなって表示され続ける。
labelText
プロパティに表示したい文字列を指定すればよい。
アイコンあり(テキストフォーム外)
テキストフォームの横にアイコンを表示する場合、icon
プロパティにIcon()
ウィジェットを指定する。
アイコンあり(テキストフォーム内)
テキストフォーム内にアイコンを表示する場合、prefixIcon
プロパティにIcon()
ウィジェットを指定する。
複数行入力
デフォルトではTextFormField
には1行しか入力ができない。
しかしmaxLines
を1より大きくすることで複数行入力が可能になる。
この時にkeyboardType: TextInputType.multiline
を併せて設定することで、キーボードのEnterで改行することができる。
下記のコードでは入力可能な範囲を見やすくするために枠線をつけている。