getGroups method
Returns all groups that intersects with the specified range
.
Implementation
Iterable<GroupedRangeList<E>> getGroups([RangeList? range]) {
if (range == null) {
return _groups.getRange(0, _groups.length);
}
final length = _groups.length;
final left = _findNearestIndex(0, length, range.start);
var firstIndex = -1;
var lastIndex = -1;
for (var i = left; i < length; i++) {
if (_groups[i].intersect(range)) {
if (firstIndex == -1) {
firstIndex = i;
lastIndex = i;
} else {
lastIndex = i;
}
} else if (firstIndex != -1) {
break;
}
}
if (firstIndex == -1) {
return <GroupedRangeList<E>>[];
}
return _groups.getRange(firstIndex, lastIndex + 1);
}