flutter - 构造函数不满足 Dart 中的空安全

标签 flutter dart dart-null-safety

<分区>

刚开始使用 Dart。 DartPad 说我的代码不是 null 安全的,但我没有看到在不为 x 和 y 赋值的情况下初始化“Point”的方法,所以它应该是 null 安全的,不是吗?

void main(){
  Point p = new Point(1.0,2.0);
  print(p.x);
}

class Point {
  double x;
  double y;

  Point(double x, double y) {
    this.x = x;
    this.y = y;
  }
}

奇怪的是,如果我使用被概述为“语法糖”的东西,它就会起作用。但这是否意味着“通用方法”也应该起作用?

void main(){
  Point p = new Point(1.0,2.0);
  print(p.x);
}

class Point {
  double x;
  double y;

  Point(this.x, this.y) {}
}

我在这里错过了什么?

最佳答案

Understanding null safety 中所述,您应该在构造函数的主体之前初始化不可为空的字段。

更新: 在这种情况下,“通用方式”看起来像这样,使用预构造器:

class Point {
  double x;
  double y;

  Point(double x, double y) :
    this.x = x,
    this.y = y;
}

关于flutter - 构造函数不满足 Dart 中的空安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68849511/

相关文章:

flutter - 为什么我的实现/扩展父类的子类在 Dart Flutter 中不被识别为父类的子类型?

flutter - 不可为 null 的实例字段 ['controller' ] 必须在 flutter 中初始化

ios - flutter : Unable to redirect to specific screen on Notification click when app is in background but not terminated in iOS

dart - 如何访问其他聚合物元素的 ShadowDOM?

Flutter - 在底部导航栏中发送参数

flutter - 如何使用flutter table_calendar构建具有不同颜色的多个标记?

flutter - 带有可选参数但至少需要一个参数的 Dart/Flutter 小部件

flutter - 为什么在 Flutter 测试期间使用 rootBundle.load 会得到 "Null check operator used on a null value"?

加载应用程序之前的 Flutter Web 应用程序进度指示器?

flutter - 此函数的返回类型为 'Widget',但不以return语句结尾