'How can you return null from orElse within Iterable.firstWhere with null-safety enabled?

Prior to null-safe dart, the following was valid syntax:

final list = [1, 2, 3];
final x = list.firstWhere((element) => element > 3, orElse: () => null);

if (x == null) {
  // do stuff...
}

Now, firstWhere requires orElse to return an int, opposed to an int?, therefore I cannot return null.

How can I return null from orElse?



Solution 1:[1]

A handy function, firstWhereOrNull, solves this exact problem.

Import package:collection which includes extension methods on Iterable.

import 'package:collection/collection.dart';

final list = [1, 2, 3];
final x = list.firstWhereOrNull((element) => element > 3);

if (x == null) {
  // do stuff...
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Thierry