averageBy method
Mean of selector applied to each element, or null if the iterable is
empty.
Returns null rather than throwing or yielding NaN on an empty
iterable, so the empty case is explicit at the call site (division by zero
would otherwise silently produce NaN).
Example:
[1, 2, 4].averageBy((n) => n); // 2.3333...
<int>[].averageBy((n) => n); // null
Audited: 2026-06-12 11:26 EDT
Implementation
@useResult
double? averageBy(num Function(T element) selector) {
num total = 0;
int count = 0;
for (final T element in this) {
total += selector(element);
count++;
}
if (count == 0) {
return null;
}
return total / count;
}