T? firstWhereOrNull<T>(List<T> list, bool Function(T item) test) { T? result; for (var item in list) { if (test(item)) { return result = item; } } return result; }