extension FirstWhereOrNullExtension on Iterable { T? firstWhereOrNull(bool Function(T) test) { for (var element in this) { if (test(element)) { return element; } } return null; } } extension LastWhereOrNullExtension on Iterable { T? lastWhereOrNull(bool Function(T) test) { T? elementItem; for (var element in this) { if (test(element)) { elementItem = element; } } return elementItem; } }