substring method

  1. @override
String substring(
  1. int start, [
  2. int? end
])
override

Implementation

@override
String substring(int start, [int? end]) {
  if (end != null && start > end) {
    throw RangeError.range(start, 0, end, 'start');
  }

  var index = start;
  var readDataSize = 0;
  if (end != null) {
    if (start > end) {
      throw RangeError.range(start, 0, end, 'start');
    }

    if (end - start == 0) {
      _lastIndex = -1;
      _readDataSize = 0;
      return '';
    }
  }

  end ??= length;
  final charCodes = <int>[];
  for (var i = 0; index < end; i++) {
    final c = _read(index);
    charCodes.add(c);
    index += _readDataSize;
    readDataSize += _readDataSize;
  }

  _lastIndex = -1;
  _readDataSize = readDataSize;
  return String.fromCharCodes(charCodes);
}