import 'package:collection/collection.dart';
final list = [1, 2, 3];
final x = list.firstWhereOrNull((element) => element > 3);
if (x == null) {
// do stuff...
}
extension FirstWhereExt<T> on List<T> {
/// The first element satisfying [test], or `null` if there are none.
T? firstWhereOrNull(bool Function(T element) test) {
for (final element in this) {
if (test(element)) return element;
}
return null;
}
}
6条答案
按热度按时间mzillmmw1#
一个方便的函数
firstWhereOrNull
解决了这个问题。导入包含
Iterable
上的扩展方法的package:collection
。but5z9lq2#
您不需要外部包,而是可以使用try/catch
j0pj023g3#
有点晚了但我想到了这个
使用示例:
mzsu5hc04#
另一种方法是为列表设置一个 nullable 类型。
不只是
[1, 2, 3]
,而是写<int?>[1, 2, 3]
,允许它为 nullable。sq1bmfud5#
这应该行得通,而且是一个更好的解决方案:
qf9go6mv6#
要添加到@Alex Hartfords的答案,对于任何不想仅为此功能导入完整包的人,这是
collection
包中的firstWhereOrNull
的实际实现,您可以将其添加到您的应用程序中。