是否存在与EXId变量初始化有关的错误?它给了我这个错误:引发了另一个异常:LateInitializationError:字段"ExId"尚未初始化。
String? selectedValue;
late final int dID;
late final int staff_Id;
late final int ExId;
late String executiveName;
List<UserLogin> allUsers = [];
@override
void dispose() {
aptStatusController.dispose();
partyTypeController.dispose();
paymentModeController.dispose();
super.dispose();
}
@override
void initState() {
super.initState();
init();
}
Future init() async {
final allUsrs = await LoginController.users();
setState(() {
this.allUsers = allUsrs;
for (int i = 0; i < allUsrs.length; i++) {
this.staff_Id == allUsrs[i].userId;
this.executiveName == allUsrs[i].userName;
if (aptExecutiveController.text == this.executiveName) {
setState(() {
ExId == this.staff_Id;
});
}
}
});
}
late
关键字用于声明稍后将初始化的变量。这些变量被称为不可为null的变量,因为它们在声明之后被初始化。
注意:一旦我们声明了一个不可为null的late
变量,该变量在运行时就不能为null。
当您在if
条件内初始化ExId
变量时。因此,可能存在if
条件不执行,导致ExId
可以为空,从而打破late
关键字约束的情况。
尝试这样声明ExId
:
int? ExId;