Dart 中的空安全

Null Safety in Dart

最近 dart 发布了名为 null safety 的新功能。我对如何使用命名参数创建构造函数有点困惑。当我使用大括号时,出现错误。

这是我的代码:

void main() {
  
}

class Student {
  String name = '';
  num age = 0;
  List<num> marks = [];
  
  Student({
    this.name,
    this.age,
    this.marks
    });
  
  void printStudentDetails() {
    print('Student Name: ' + this.name);
  }
}

这是我得到的错误:

由于您的 class 的属性不可为空(例如,类型是 String 而不是 String?),您需要将 required 添加到属性在构造函数中,或者提供一个默认值(这似乎是你想要做的)。

  Student({
    this.name = '',
    this.age = 0,
    this.marks = [],
    });

您现在也可以将您的属性设为最终属性:

final String name;
final num age;
final List<num> marks;

或者,使用所需的关键字:

  Student({
    required this.name,
    required this.age,
    required this.marks,
    });