getMinChildIndexForScrollOffset method
Implementation
int getMinChildIndexForScrollOffset(
Iterable<_Interval> list, double scrollOffset, double itemExtent) {
if (scrollOffset <= 0) return 0;
var toOffset = 0.0, adjust = 0.0;
for (final interval in list.expandedIntervals) {
if (interval is _SpaceInterval) {
toOffset += interval.currentSize;
if (scrollOffset < toOffset) {
return interval.actualBuildOffset;
}
adjust += itemExtent - interval.currentSize;
} else {
toOffset += interval.buildCount * itemExtent;
if (scrollOffset < toOffset) break;
}
}
scrollOffset += adjust;
if (itemExtent > 0.0) {
final actual = scrollOffset / itemExtent;
final round = actual.round();
if ((actual * itemExtent - round * itemExtent).abs() <
precisionErrorTolerance) {
return round;
}
return actual.floor();
}
return 0;
}