Iterable.generate(int count, [E generator(int index)])

Creates an Iterable that generates its elements dynamically.

An Iterator created by iterator will count from zero to count - 1, and call generator with each index in turn to create the next value.

If generator is omitted, it defaults to an identity function on integers (int x) => x, so it should only be omitted if the type parameter allows integer values.

As an Iterable, new Iterable.generate(n, generator)) is equivalent to const [0, ..., n - 1].map(generator).

Source

factory Iterable.generate(int count, [E generator(int index)]) {
  if (count <= 0) return new EmptyIterable<E>();
  return new _GeneratorIterable<E>(count, generator);
}