281 文字
1 分
[flutter] TextFormFieldを利用して「 'initialValue == null || controller == null': is not true.」というエラーになった時の対応

flutterでアプリ開発してたらエラーではまったのでその対応メモです。
なお開発環境は次の通りです。

  • Windows 10
  • flutter 3.22.2

事象#

TextFormFieldを利用すると、次のようなエラーが表示されました。

'package:flutter/src/material/text_form_field.dart': Failed assertion: line 177 pos 15: 'initialValue == null || controller == null': is not true.

このエラーが発生する最小のコードは次の通りです。

TextFormField(
controller: TextEditingController(),
initialValue: 'init',
),

原因#

TextFormFieldではcontrollerinitialValueを同時に利用することはできません。

initialValueに値を設定すると内部的にcontrollerを生成するため、同時に利用できないものと思われます。

対応方法#

controllerinitialValueのどちらかのみを利用することでエラーを回避できます。

TextEditingControllerには初期値を設定することができるため、基本的にはcontrollerを利用するで問題ないと思います。

修正前#

TextFormField(
controller: TextEditingController(),
initialValue: 'init',
),

修正後#

TextFormField(
controller: TextEditingController(text: 'init'),
),

参考: