我试图将onElse函数添加到itterator.firstWhere方法中,但语法不正确。我试过类似的方法
List<String> myList = String result = myList.firstWhere((o) => o.startsWith('foo'), (o) => null);
但是编译器有一个错误需要1个位置参数,但找到2个我确信这是一个简单的语法问题,但它难倒了我
gopyfrb31#
如果有人来到这里感谢谷歌,搜索如何返回null如果firstWhere没有找到任何东西,当您的应用程序是空安全,使用新的方法package:collection称为firstWhereOrNull。
null
firstWhere
package:collection
firstWhereOrNull
import 'package:collection/collection.dart'; // You have to add this manually, for some reason it cannot be added automatically // somewhere... MyStuff? stuff = someStuffs.firstWhereOrNull((element) => element.id == 'Cat');
关于方法:https://pub.dev/documentation/collection/latest/collection/IterableExtension/firstWhereOrNull.html
ergxz8rk2#
'orElse'是一个命名的可选参数。
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'); } }
vfh0ocws3#
使用cast〈E?〉(),您可以在不添加依赖项的情况下完成此操作:
void main() { List<String> myList = ["Hello", "World"]; String? result = myList.cast<String?>().firstWhere((o) => o!.startsWith('foo'), orElse: () => null); print(result ?? "No result"); }
你可以在dartpad上试试。
4szc88ey4#
您必须直接添加集合包:运行下面的命令,这将把它添加到pubspec.yaml文件中:$ flutter pub添加收藏参考:collection: ^1.16.0
4条答案
按热度按时间gopyfrb31#
如果有人来到这里感谢谷歌,搜索如何返回
null
如果firstWhere
没有找到任何东西,当您的应用程序是空安全,使用新的方法package:collection
称为firstWhereOrNull
。关于方法:https://pub.dev/documentation/collection/latest/collection/IterableExtension/firstWhereOrNull.html
ergxz8rk2#
'orElse'是一个命名的可选参数。
vfh0ocws3#
使用cast〈E?〉(),您可以在不添加依赖项的情况下完成此操作:
你可以在dartpad上试试。
4szc88ey4#
您必须直接添加集合包:运行下面的命令,这将把它添加到pubspec.yaml文件中:
$ flutter pub添加收藏
参考:collection: ^1.16.0