Appearance
IterableExtensions<T>
extension IterableExtensions<T> on Iterable<T>Annotations: @Since.new("3.0")
Operations on iterables.
Properties
firstOrNull extension no setter
T? get firstOrNullThe first element of this iterator, or null if the iterable is empty.
Available on Iterable<E>, provided by the IterableExtensions<T> extension
Implementation
dart
T? get firstOrNull {
var iterator = this.iterator;
if (iterator.moveNext()) return iterator.current;
return null;
}indexed extension no setter
Iterable<Record> get indexedPairs of elements of the indices and elements of this iterable.
The elements are (0, this.first) through (this.length - 1, this.last), in index/iteration order.
Available on Iterable<E>, provided by the IterableExtensions<T> extension
Implementation
dart
@pragma('vm:prefer-inline')
Iterable<(int, T)> get indexed => IndexedIterable<T>(this, 0);lastOrNull extension no setter
T? get lastOrNullThe last element of this iterable, or null if the iterable is empty.
This computation may not be efficient. The last value is potentially found by iterating the entire iterable and temporarily storing every value. The process only iterates the iterable once. If iterating more than once is not a problem, it may be more efficient for some iterables to do:
dart
var lastOrNull = iterable.isEmpty ? null : iterable.last;Available on Iterable<E>, provided by the IterableExtensions<T> extension
Implementation
dart
T? get lastOrNull {
if (this is EfficientLengthIterable) {
if (isEmpty) return null;
return last;
}
var iterator = this.iterator;
if (!iterator.moveNext()) return null;
T result;
do {
result = iterator.current;
} while (iterator.moveNext());
return result;
}singleOrNull extension no setter
T? get singleOrNullThe single element of this iterator, or null.
If the iterator has precisely one element, this is that element. Otherwise, if the iterator has zero elements, or it has two or more, the value is null.
Available on Iterable<E>, provided by the IterableExtensions<T> extension
Implementation
dart
T? get singleOrNull {
var iterator = this.iterator;
if (iterator.moveNext()) {
var result = iterator.current;
if (!iterator.moveNext()) return result;
}
return null;
}Methods
elementAtOrNull() extension
T? elementAtOrNull(int index)The element at position index of this iterable, or null.
The index is zero based, and must be non-negative.
Returns the result of elementAt(index) if the iterable has at least index + 1 elements, and null otherwise.
Available on Iterable<E>, provided by the IterableExtensions<T> extension
Implementation
dart
T? elementAtOrNull(int index) {
RangeError.checkNotNegative(index, "index");
if (this is EfficientLengthIterable) {
if (index >= length) return null;
return elementAt(index);
}
var iterator = this.iterator;
do {
if (!iterator.moveNext()) return null;
} while (--index >= 0);
return iterator.current;
}