FlutterのTextFieldのラベルを常に上部表示にしたり位置を変えたりする
やりたいこと
以下を実現したい場合のFlutter側の実装を紹介する。
- TextFieldにフォーカスが当たってなくてもラベルを上部に表示させる
- ラベル位置を変える
以下のようなUIを組むことができる。
ラベルを上部に表示させる
InputDecoration
クラスのfloatingLabelBehavior
プロパティにFloatingLabelBehavior.always
を指定することで実現できる。
const TextField(
decoration: InputDecoration(
floatingLabelBehavior: FloatingLabelBehavior.always,
labelText: 'Label Name 1',
hintText: 'Hint Text 1',
hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder(),
),
),
FloatingLabelBehavior
はenum
であり、他の値としてはデフォルトのauto
やnever
がある。
ラベル位置を変える
InputDecoration
クラスのfloatingLabelAlignment
プロパティにFloatingLabelAlignment.center
を指定することで実現できる。
const TextField(
decoration: InputDecoration(
floatingLabelAlignment: FloatingLabelAlignment.center,
labelText: 'Label Name 2',
hintText: 'Hint Text 2',
hintStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder(),
),
),
FloatingLabelAlignment
はenum
ではないが、定数にcenter
とstart
があるのでenum
っぽく使うことができる。