9-01 2,676 views
最近在学dart class的构造函数时候出现 这个问题
原因是firstName没有初始化,不能为null
解决方案:
1.在String后面加个?
class Person {
String? firstName ;
Person.fromJson(Map data) {
print('in Person');
}
}
2.使用late关键字
class Person {
late String firstName ;
Person.fromJson(Map data) {
print('in Person');
}
}
完整代码:
class Person {
late String firstName ;
Person.fromJson(Map data) {
print('in Person');
}
}
class Employee extends Person {
// Person does not have a default constructor;
// you must call super.fromJson(data).
Employee.fromJson(Map data) : super.fromJson(data) {
print('in Employee');
}
}
main() {
var emp = new Employee.fromJson({});
// Prints:
// in Person
// in Employee
if (emp is Person) {
// Type check
emp.firstName = 'Bob';
}
(emp as Person).firstName = 'Bob';
}
参考:https://stackoverflow.com/questions/67034475/non-nullable-instance-field-must-be-initialized