debugResolveOffsetForContentOffset method

({int index, int offsetInItem}) debugResolveOffsetForContentOffset(
  1. int contentOffset
)

Implementation

({int index, int offsetInItem}) debugResolveOffsetForContentOffset(
  int contentOffset,
) {
  if (_cachedItemCount <= 0) return (index: 0, offsetInItem: 0);

  final rawOffset = contentOffset.toInt();
  final targetOffset = _cachedItemCount <= _smallListExactResolutionLimit
      ? rawOffset.clamp(0, 0x7fffffff)
      : contentOffset.clamp(0, math.max(0, _strideTree.total - 1)).toInt();

  if (size.width <= 0) {
    final index = _findStartIndexForOffset(targetOffset);
    return (
      index: index,
      offsetInItem: targetOffset - _itemStartOffset(index),
    );
  }

  if (_cachedItemCount <= _smallListExactResolutionLimit) {
    return _resolveOffsetForContentOffsetByMeasuring(
      contentOffset: targetOffset,
    );
  }

  final index = _findStartIndexForOffset(targetOffset);
  return (index: index, offsetInItem: targetOffset - _itemStartOffset(index));
}