beginIndexForScrollOffset static method

double beginIndexForScrollOffset({
  1. required double offset,
  2. required double itemExtent,
  3. required double itemCount,
  4. required int dataLength,
  5. double trailingBlankItemCount = 0,
  6. double minTrailingVisibleItemCount = 3,
})

Implementation

static double beginIndexForScrollOffset({
  required double offset,
  required double itemExtent,
  required double itemCount,
  required int dataLength,
  double trailingBlankItemCount = 0,
  double minTrailingVisibleItemCount = 3,
}) {
  if (dataLength <= 0 || itemCount <= 0 || itemExtent <= 0) {
    return 0.0;
  }

  final rawBeginIndex = offset / itemExtent;
  if (rawBeginIndex.isNaN || rawBeginIndex.isInfinite) {
    return 0.0;
  }

  final maxBeginIndex = maxBeginIndexFor(
    dataLength: dataLength,
    itemCount: itemCount,
    trailingBlankItemCount: trailingBlankItemCount,
    minTrailingVisibleItemCount: minTrailingVisibleItemCount,
  );
  return rawBeginIndex.clamp(0.0, maxBeginIndex).toDouble();
}