fromStream<T extends num> static method

Future<LightStats<T>> fromStream<T extends num>(
  1. Stream<T> source
)

Implementation

static Future<LightStats<T>> fromStream<T extends num>(
  Stream<T> source,
) async {
  num sum = 0;
  var count = 0;

  T? min, max;

  await for (var value in source) {
    min = (min == null) ? value : math.min(min, value);
    max = (max == null) ? value : math.max(max, value);
    count++;
    sum += value;
  }

  if (count == 0) {
    throw ArgumentError.value(source, 'source', 'Cannot be empty.');
  }

  final mean = sum / count;

  return LightStats<T>(count, mean, min!, max!);
}