[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'),
),

参考:

TextFormField class - material library - Dart API
API docs for the TextFormField class from the material library, for the Dart programming language.
Flutter - 'initialValue == null || controller == null': is not true. error
I'm trying to set an initial value for the text field. But I Can't set the initial value in text form field. I'm getting...

コメント