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)
コメント