如何将列表折叠迁移到空安全

Pab*_*blo 2 dart dart-null-safety

这段代码在没有 null 安全性的情况下运行良好:

void main() {
  final a = X(22.5);
  final b = X(22.5);
  List<X> x = [a, b];
  var tot = x.fold(0.0, (a, b) => a + b.dist);
  print(tot);
}

class X {
  final double dist;
  X(this.dist);
}
Run Code Online (Sandbox Code Playgroud)

在零安全性下,我们得到:

不能无条件调用运算符“+”,因为接收者可以为“null”。尝试向目标添加空检查('!')。

不知道目标是谁/什么或接收者。我已经阅读了有关 null 安全性的所有 Dart 材料,但无法将其构建为箭头表达式 ( => a + b.dist)。

谢谢你的帮助!

Enz*_*nzo 7

您可以选择以下方法之一:

  1. 显式定义fold方法类型参数:
var tot = x.fold<double>(0.0, (a, b) => a + b.dist);
Run Code Online (Sandbox Code Playgroud)
  1. 显式定义tot变量类型:
double tot = x.fold(0.0, (a, b) => a + b.dist);
Run Code Online (Sandbox Code Playgroud)