我想知道是否有办法访问 dart 中列表的第一个元素,如果一个元素存在,否则返回 null。
首先,我认为这可以完成这项工作:
final firstElement = myList?.first;
Run Code Online (Sandbox Code Playgroud)
如果 myList 为空或 myList.length > 0,这有效,但如果 myList 是空列表,则会给我一个错误。
我想我可以做这样的事情:
final firstElement = (myList?.length ?? 0) > 0 ? myList.first : null;
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一种更简单的方法来做我想做的事情。
Edw*_*Liu 14
现在你可以导入package:collection和使用扩展方法 firstOrNull
import 'package:collection/collection.dart';
void main() {
final myList = [];
final firstElement = myList.firstOrNull;
print(firstElement); // null
}
Run Code Online (Sandbox Code Playgroud)
对于 Dart 2.12(具有空安全性),添加扩展函数可能是一个好主意:
extension MyIterable<T> on Iterable<T> {
T? get firstOrNull => isEmpty ? null : first;
T? firstWhereOrNull(bool Function(T element) test) {
final list = where(test);
return list.isEmpty ? null : list.first;
}
}
Run Code Online (Sandbox Code Playgroud)