说参数必须传,这是为什么呢?

来源:5-8 带你揭开Flutter中的面向对象(命名构造方法)

慕田峪0044676

2022-03-25

图片描述

写回答

2回答

CrazyCodeBoy

2022-03-25

这是你所使用的flutter版本启动了空安全检查,先看下前面课程中的空安全适配一章内容做下空安全适配

0
0

慕田峪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'.



0
0

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3270 问题

查看课程