问题描述
我创建了一个单独的类“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
。您应该仅将 late
用于稍后将在尝试使用之前初始化的非空变量:
tripDirectionDetails != null /// This will trigger an error
您应该在 build
或 initState
中使用它之前对其进行初始化:
@override
void initState() {
tripDirectionDetails = DirectionDetails();
super.initState();
}
但由于 tripDirectionDetails
可以为 null,最好这样声明:
DirectionDetails? tripDirectionDetails;
tripDirectionDetails != null /// Won't trigger an error