将orElse函数添加到firstWhere方法

时间:2014-10-22 09:15:27

标签: dart

我正在尝试将onElse函数添加到itterator.firstWhere方法,但我无法正确使用语法。

我尝试了类似

的内容
List<String> myList = 

String result = myList.firstWhere((o) => o.startsWith('foo'), (o) => null);

但是编译器有错误

  

预期1个位置参数,但发现2个

我确信这是一个简单的语法问题,但它让我难以理解

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');
  }
}