必须初始化不可为 null 的实例字段“taskTitle”

par*_*ras 2 dart flutter dart-null-safety

我是 Flutter 开发的新手,在我的代码中为什么我收到此错误(taskTitle必须初始化不可为空的实例字段),尽管在 constructor 中初始化了实例字段

因此,我假设每当创建此类实例时,用户都需要提供两个强制成员,因此不应发生此错误(尽管如果添加 Late 修饰符此错误就会消失)。

请解答我的疑惑。

class Task {
  String taskTitle;
  bool isDone = false;

  Task(String taskTitle, bool isDone) {
    this.taskTitle = taskTitle;
    this.isDone = isDone;
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 6

您正在使用dart null safety环境,为此,您必须通过定义将taskTitle变量声明为nullable变量(如果它可以为空):

String? taskTitle;

或者如果它不为空,那么你可以说:

late String taskTitle;

这意味着稍后您将初始化该taskTitle变量并且它不会为空。

  • 虽然确实如此,但它实际上并没有回答为什么OP发布的代码抱怨它可能为空的问题,而它是其他语言构建不可空类型的首选模式。 (3认同)