【Flutter】「Non-nullable instance field ‘XX’ must be initialized」の意味と対策

Flutterのエラー「Non-nullable instance field ‘XX’ must be initialized」の意味と対策について紹介します。

「Non-nullable instance field ‘XX’ must be initialized」の意味

Flutterでデバッグすると「Non-nullable instance field ‘XX’ must be initialized」というエラーが出ることがあります。 例えば、以下のようなコードだと「Non-nullable instance field ‘_id’ must be initialized」というエラーが出ます。

class Todo {
  int _id; ← エラー
  String _title;
  String _description;
  String _year;
  String _month;
  String _day;
  int _priority;

  Todo(this._title, this._priority, this._year, this._month, this._day, [this._description]); ← エラー

  Todo.withId(this._id, this._title, this._priority, this._year, this._month, this._day, [this._description]);

(略)

}

最新版のFlutterでは「Null safety」が導入されたため、変数の値にNullを容易に入れることができなくなりました。 変数にNullを入れるには以下のような記述が追加で必要です。

  • 変数をNull許容型で宣言する
    • 型名の末尾に?をつけると、その変数はNull許容型となり、Nullを入れることができます。
    • (例)String? name;
  • 特別な修飾子(?・!・late・required)

コメント