RangeIterable constructor

RangeIterable(
  1. int start,
  2. int end, {
  3. int step = 1,
  4. bool inclusive = false,
})

Creates an iterable that contains all elements between start (inclusive) and end (exclusive, optionally inclusive).

This iterable will generate values dynamically in a lazy fashion. When consumed, the iterable will result in a range of values, typically in the range from start to end, including start but not including end. Having the value of start be greater than end will result in an error.

If inclusive is true, end will be included in the iterable as the last value.

If step is not 1, the values in the interval will skip step times. For example, a range of [2-7] with an step of 2 will result in the iterable [2, 4, 6]. If step is negative, the iterable will be reversed, starting from end and descending to start. (If inclusive is false, the first value will be end - 1.) Having the value step be 0 will result in an error.

Implementation

RangeIterable(
  this.start,
  int end, {
  this.step = 1,
  bool inclusive = false,
})  : assert(end >= start),
      assert(step != 0, 'The interval must be a non-zero integer.'),
      end = inclusive ? end : end - 1;