【问题标题】:Flutter-Non-nullable instance field ‘{0}’ must be initialized errorFlutter-Non-nullable instance field ‘{0}’ must be initialized 错误
【发布时间】:2021-09-27 02:35:06
【问题描述】:

我创建了一个单独的类“DirectionDetails”;

class DirectionDetails{

  int distanceValue;
  int durationValue;
  String distanceText;
  String durationText;
  String encodedPoints;

  DirectionDetails(this.distanceValue, this.durationValue, this.distanceText, this.durationText, this.encodedPoints);

}

当我尝试通过DirectionDetails tripDirectionDetails; 在主类中初始化它时,它给出了

必须初始化不可为空的实例字段“tripDirectionDetails”

错误。但正如它所暗示的,当我添加“延迟”修饰符时 - 它不会显示任何错误但是当我运行应用程序时它给出了,

LateInitializationError:字段“tripDirectionDetails”尚未 初始化。

运行时错误

当我尝试在主类中初始化 tripDirectionDetails 时,我尝试了另一种方法,

DirectionDetails tripDirectionDetails = new DirectionDetails();

并修改DirectionDetails类,

class DirectionDetails{

  int distanceValue;
  int durationValue;
  String distanceText;
  String durationText;
  String encodedPoints;

  DirectionDetails({this.distanceValue = 0, this.durationValue = 0, this.distanceText = "", this.durationText = "", this.encodedPoints = ""});
  
}

应用程序运行成功,它检索“DirectionDetails”类中的所有值仅用于初始重启。

但是当我退出应用程序并返回时,它会给出以下错误。

LateInitializationError:字段“tripDirectionDetails”尚未 初始化。

非常感谢您的帮助。

谢谢

【问题讨论】:

  • 您能说明tripDirectionDetails 的使用位置吗?
  • @JohnOyekanmi Text(((tripDirectionDetails!= null) ? tripDirectionDetails.durationText : '') , style: TextStyle(fontSize: 16.0, color: Colors.grey),),
  • 好的,我假设正在使用它的小部件是 StatefulWidget。如果是这种情况,请尝试在 initState 方法中初始化字段tripDirectionDetails,然后再在任何地方使用它。像这样tripDirectionDetails = DirectionDetails().

标签: flutter google-maps dart non-nullable


【解决方案1】:

这是因为您在初始化之前尝试使用tripDirectionDetails。您应该仅将late 用于将在稍后尝试使用之前初始化的非空变量:

tripDirectionDetails != null /// This will trigger an error

buildinitState 上使用它之前,您应该初始化它:

@override
  void initState() {
    tripDirectionDetails = DirectionDetails();
    super.initState();
  }

但由于tripDirectionDetails 可以为空,最好这样声明:

DirectionDetails? tripDirectionDetails;

tripDirectionDetails != null /// Won't trigger an error

【讨论】:

  • 非常感谢@NelsonThiango,你救了我的命!
猜你喜欢
  • 1970-01-01
  • 2021-06-04
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 2017-08-14
  • 2015-08-25
  • 2020-09-17
相关资源
最近更新 更多