GenericIterableExtensions<T> extension

List helpers: indexes, safe lookups, grouping, sorting, chunks, sums. users.groupBy((u) => u.city)

on

Methods

addAllAndReturn(Iterable<T> t) → List<T>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

New list with all of t added at the end.
addAndReturn(T t) → List<T>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

New list with t added at the end.
alternative(T main, T replace) → List<T>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

New list with main removed and replace added at the end. tags.alternative("old", "new")
averageBy(num value(T item)) → double

Available on Iterable<T>, provided by the GenericIterableExtensions extension

Average of a number from each item (0 when empty). scores.averageBy((s) => s.value)
chunked(int size) → List<List<T>>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

Splits into lists of size. [1,2,3,4,5].chunked(2) → [1,2,3,4,5]
containsAll(Iterable<T> list) → bool

Available on Iterable<T>, provided by the GenericIterableExtensions extension

True when every item of list is in this one.
containsAny(Iterable<T> list) → bool

Available on Iterable<T>, provided by the GenericIterableExtensions extension

True when at least one item of list is in this one.
distinctBy<K>(K key(T item)) → List<T>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

Removes duplicates by a field, keeping the first. users.distinctBy((u) => u.id)
firstOrDefault({T? defaultValue}) → T?

Available on Iterable<T>, provided by the GenericIterableExtensions extension

First item, or defaultValue when empty. list.firstOrDefault(defaultValue: 0)
firstWhereOrNull(bool test(T element)) → T?

Available on Iterable<T>, provided by the GenericIterableExtensions extension

First item that passes test, or null. users.firstWhereOrNull((u) => u.id == id)
forEachIndexed(void action(int index, T element)) → void

Available on Iterable<T>, provided by the GenericIterableExtensions extension

forEach() that also gives the index. items.forEachIndexed((i, e) => print("$i $e"))
getFirstIfExist() → T?

Available on Iterable<T>, provided by the GenericIterableExtensions extension

First item, or null when empty.
groupBy<K>(K key(T item)) → Map<K, List<T>>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

Groups items by a key. orders.groupBy((o) => o.status) → {paid: ..., pending: ...}
insertAndReturn(int index, T t) → List<T>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

New list with t inserted at index.
insertFirstReturn(T item) → List<T>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

New list with item first. [2, 3].insertFirstReturn(1) → 1, 2, 3
mapIndexed<E>(E f(int index, T item)) → Iterable<E>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

map() that also gives the index. items.mapIndexed((i, e) => "$i: $e")
maxBy(Comparable<Object?> value(T item)) → T?

Available on Iterable<T>, provided by the GenericIterableExtensions extension

Item with the biggest value, or null when empty. products.maxBy((p) => p.price)
minBy(Comparable<Object?> value(T item)) → T?

Available on Iterable<T>, provided by the GenericIterableExtensions extension

Item with the smallest value, or null when empty. products.minBy((p) => p.price)
separatedBy(T separator) → List<T>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

Puts separator between items. [a, b, c].separatedBy(x) → a, x, b, x, c
sortedBy<K extends Comparable<Object?>>(K key(T item), {bool descending = false}) → List<T>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

New list sorted by a field; descending reverses it. users.sortedBy((u) => u.name)
sumBy(num value(T item)) → num

Available on Iterable<T>, provided by the GenericIterableExtensions extension

Adds up a number from each item. cart.sumBy((i) => i.price * i.count)
takeIfPossible(int range) → Iterable<T>

Available on Iterable<T>, provided by the GenericIterableExtensions extension

take() that never throws. list.takeIfPossible(5)