说参数必须传,这是为什么呢?
来源:5-8 带你揭开Flutter中的面向对象(命名构造方法)
慕田峪0044676
2022-03-25
写回答
2回答
-
CrazyCodeBoy
2022-03-25
这是你所使用的flutter版本启动了空安全检查,先看下前面课程中的空安全适配一章内容做下空安全适配
00 -
慕田峪0044676
提问者
2022-03-25
代码:
class Student extends Person { String _school; // dart 通过下划线定义私有变量 String? city; String? country; String name; // 构造方法 /// this.*** 初始化自己的参数 /// this.city, 可选参数 可以为空 /// this.country 可选参数 如果为空 默认为china Student(String name, int age, this._school, {this.city, this.country = 'china'}) : // 初始化列表 这里也可以初始化其他变量 name = '$country.$city', // 父类构造方法 super(name, age) { // 构造方法也可以有方法体 print('方法体是可有可无的'); } // 命名构造方法 Student.cover(Student stu) : super(stu.name, stu.age); } /// 所有的类都继承自Object class Person { String name; int age; /// 标准的构造方法 Person(this.name, this.age); }
这行代码:
Student.cover(Student stu) : super(stu.name, stu.age);
的Student. 的地方报错
报错:
Non-nullable instance field '_school' must be initialized. (Documentation) Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'.
Non-nullable instance field 'name' must be initialized. (Documentation) Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'.
00
相似问题