我正在尝试将onElse函数添加到itterator.firstWhere方法,但我无法正确使用语法。
我尝试了类似
的内容List<String> myList =
String result = myList.firstWhere((o) => o.startsWith('foo'), (o) => null);
但是编译器有错误
预期1个位置参数,但发现2个
我确信这是一个简单的语法问题,但它让我难以理解
答案 0 :(得分:41)
如果有人因为谷歌来到这里,搜索如何返回 null
if firstWhere
什么也没找到,当你的应用是 Null Safe 时,使用新方法package:collection
称为 firstWhereOrNull
。
import 'package:collection/collection.dart';
// somewhere...
MyStuff? stuff = someStuffs.firstWhereOrNull((element) => element.id == 'Cat');
关于方法: https://pub.dev/documentation/collection/latest/collection/IterableExtension/firstWhereOrNull.html
答案 1 :(得分:21)
&#39;否则容易&#39;是一个命名的可选参数。
void main() {
checkOrElse(['bar', 'bla']);
checkOrElse(['bar', 'bla', 'foo']);
}
void checkOrElse(List<String> values) {
String result = values.firstWhere((o) => o.startsWith('foo'), orElse: () => '');
if (result != '') {
print('found: $result');
} else {
print('nothing found');
}
}