この記事はこんな人におすすめ!
- TextFieldなどで使用されるTextEditingControllerの役割について知りたい
今回はTextField
やTextFormField
などで使用されるTextEditingController
とは何かについて解説していきます。
目次
TextEditingControllerとは?
TextEditingController
は入力フォーム(テキストフィールド)でユーザーによって入力された値をリスナーし値を制御するのが主な役割です。
入力フォームの値の変更を監視する
TextEditingController
をTextField
やTextFormField
のcontroller
の引数にすることで入力フォームの値を監視し、値の変化をスクリーンに反映します。
この際TextEditingController
をcontroller
の引数に直接渡すのではなく、定数として定義したものを渡すようにします。
class _MyHomePageState extends State<MyHomePage> {
final _myController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Flutter')),
body: TextField(
controller: _myController,
),
);
}
}
TextFieldで初期値を設定できる
TextField
で使用されるTextEditingController
を定数として定義する際にtext
を使用することで初期値を設定できます。
final _myController = TextEditingController(text: 'Hello World');
TextFormField
の場合はTextEditingController
を使用せず、initialValue
で初期値を設定できます。
TextFormField(
initialValue: 'Hello World',
)
入力フォームの値を取得
入力フォームの現在の値はTextEditingController
のtext
プロパティで取得できます。
print(_myController.text);
入力フォームの値を更新・消去できる
入力フォームの値を動的にプログラムで更新したり消去したりできます。
_myController.text = 'New Hello World';
_myController.clear();
参考サイト
- https://api.flutter.dev/flutter/widgets/TextEditingController-class.html
- https://www.dhiwise.com/post/flutter-texteditingcontroller-key-to-interactive-text-fields