首页 > 解决方案 > “接收器可以为空”什么时候不能?

问题描述

我刚刚完成了 nullsafe 迁移。我发现使用空检查包装代码有时会消除对空检查!运算符的需要?例如,

class MyClass {
  double divideBy4(double numerator) {
    return numerator / 4;
  }

  double quarteredWorks(double? value) {
    if (value != null)
      return divideBy4(value); // <- no intellisense warning
    else
      return 0;
  }

  double quarteredDoesntWork(double? value) {
      return divideBy4(value); // <- intellisense: "double? can't be assigned to double"
  }

  double? value;

  double divideBy2() {
    if (value != null)
      return value / 2; // <- intellisense: "receiver can be null"
    else
      return .0;
  }
}

编辑 更改了我的示例以显示使用有效的空检查包装的示例

标签: flutterdart-null-safety

解决方案


推荐阅读