Dart中如何用一行代码获取List首个元素,为空则返回null?
实现一行代码获取首个元素或null
你可以通过以下几种方式实现一行代码的需求:
方式1:使用Dart内置的elementAtOrNull(Dart 2.17+)
Dart 2.17及以上版本的Iterable新增了elementAtOrNull方法,传入索引0即可获取首个元素,空迭代器时会返回null:
final paragraphNode = findNodes(node, (p) => p.type == 'p').elementAtOrNull(0);
方式2:借助collection包的firstWhereOrNull
如果你的项目引入了官方的collection包,可以用firstWhereOrNull配合始终返回true的条件,直接匹配首个元素:
final paragraphNode = findNodes(node, (p) => p.type == 'p').firstWhereOrNull((_) => true);
方式3:自定义扩展方法
如果不想依赖额外包,也可以给Iterable写一个扩展,添加firstOrNull属性:
extension FirstOrNullExtension<T> on Iterable<T> { T? get firstOrNull => isNotEmpty ? first : null; }
之后就能像调用原生方法一样使用:
final paragraphNode = findNodes(node, (p) => p.type == 'p').firstOrNull;
内容的提问来源于stack exchange,提问作者Andre Pena
相关产品推荐
相关产品推荐

