Метод firstWhere
Метод firstWhere возвращает первый элемент
коллекции, который удовлетворяет заданному условию.
В первый параметр мы передаем функцию-предикат,
которая проверяет каждый элемент. Во второй
необязательный параметр мы передаем функцию,
которая будет вызвана, если ни один элемент
не удовлетворил условию. Если второй параметр
не указан и совпадений нет, будет выброшено
исключение StateError.
Синтаксис
iterable.firstWhere(test, [orElse])
Пример
Давайте найдем первый элемент списка, который
больше 3:
void main()
{
List<int> numbers = [1, 2, 3, 4, 5];
int res = numbers.firstWhere((int n) => n > 3);
print(res);
}
Результат выполнения кода:
4
Пример
Давайте найдем первый элемент списка строк,
который начинается с буквы 'c':
void main()
{
List<String> letters = ['a', 'b', 'c', 'd', 'e'];
String res = letters.firstWhere((String s) => s == 'c');
print(res);
}
Результат выполнения кода:
"c"
Пример
Давайте попробуем найти элемент, которого нет
в списке, и передадим функцию orElse,
чтобы избежать исключения:
void main()
{
List<int> numbers = [1, 2, 3, 4, 5];
int res = numbers.firstWhere(
(int n) => n > 10,
orElse: () => -1
);
print(res);
}
Результат выполнения кода:
-1
Пример
Если не указать функцию orElse и совпадений
не найдется, метод выбросит исключение. Давайте
убедимся в этом:
void main()
{
List<int> numbers = [1, 2, 3, 4, 5];
try
{
int res = numbers.firstWhere((int n) => n > 10);
print(res);
}
catch (e)
{
print('Not found');
}
}
Результат выполнения кода:
"Not found"
Смотрите также
-
метод
lastWhere,
который возвращает последний подходящий элемент -
метод
singleWhere,
который возвращает единственный подходящий элемент -
метод
where,
который возвращает все подходящие элементы -
свойство
first,
которое возвращает первый элемент коллекции