Iterable<String> split(
String lines,
[int start = 0,
int end]
)

Split lines into individual lines.

If start and end are provided, only split the contents of lines.substring(start, end). The start and end values must specify a valid sub-range of lines (0 <= start <= end <= lines.length).

Source

/// Split [lines] into individual lines.
///
/// If [start] and [end] are provided, only split the contents of
/// `lines.substring(start, end)`. The [start] and [end] values must
/// specify a valid sub-range of [lines]
/// (`0 <= start <= end <= lines.length`).
static Iterable<String> split(String lines, [int start = 0, int end]) sync* {
  end = RangeError.checkValidRange(start, end, lines.length);
  int sliceStart = start;
  int char = 0;
  for (int i = start; i < end; i++) {
    int previousChar = char;
    char = lines.codeUnitAt(i);
    if (char != _CR) {
      if (char != _LF) continue;
      if (previousChar == _CR) {
        sliceStart = i + 1;
        continue;
      }
    }
    yield lines.substring(sliceStart, i);
    sliceStart = i + 1;
  }
  if (sliceStart < end) {
    yield lines.substring(sliceStart, end);
  }
}