検索
[Flutter/dart]late finalの変数でlateInitializationError
- M.R 
- 2022年12月30日
- 読了時間: 1分
現象
下記のようなクラスがあります。
class SomeClass{
  late final String? hoge;
  
  SomeClass({this.hoge}){
    hoge??= ""; //1
  }
}hogeがnull(つまり、引数に値が設定されない)の場合、1の箇所でlateInitializationエラーになります。
lateなんだからここで値代入してもいいでしょ?と思っていました、、、
原因
this.hogeのところで「初期化」しているので、それ以降の値の代入はlateInitializationになります。例え値がnullでも、です。
nullの場合は代入していないからまだ初期化していないと思っていました。
解決策
this.hogeの形式にするのをやめましょう。
class SomeClass{
  late final String? hoge;
  
  SomeClass({String? hoge}){
    this.hoge = hoge?? "";
  }
}





コメント