在启用空值安全的情况下,如何在 Iterable.firstWhere 中从 orElse 返回空值?

时间:2021-06-04 19:47:33

标签: flutter dart

在空安全 dart 之前,以下是有效的语法:

final list = [1, 2, 3];
final x = list.firstWhere((element) => element > 3, orElse: () => null);

if (x == null) {
  // do stuff...
}

现在,firstWhere 要求 orElse 返回 int,而不是 int?,因此我不能返回 null。

如何从 orElse 返回 null?

1 个答案:

答案 0 :(得分:2)

一个方便的函数 firstWhereOrNull 解决了这个确切的问题。

导入 package:collection,其中包括 Iterable 上的扩展方法。

import 'package:collection/collection.dart';

final list = [1, 2, 3];
final x = list.firstWhereOrNull((element) => element > 3);

if (x == null) {
  // do stuff...
}