siblingRange property

(int, int) get siblingRange

The start and end pages to display around the current page.

Implementation

(int, int) get siblingRange {
  final last = pages - 1;
  if (pages <= minPagesDisplayedAtEdges) {
    return (0, last);
  }

  return (
    switch (_rawValue) {
      _ when _rawValue - siblings < 0 => 0,
      _ when _rawValue > (last - minPagesDisplayedAtEdges) => (last - minPagesDisplayedAtEdges) - siblings,
      _ when _rawValue <= minPagesDisplayedAtEdges => 0,
      _ => _rawValue - siblings,
    },
    switch (_rawValue) {
      _ when _rawValue + siblings > last => last,
      _ when _rawValue < minPagesDisplayedAtEdges + 1 => minPagesDisplayedAtEdges + siblings,
      _ when _rawValue >= (last - minPagesDisplayedAtEdges) => last,
      _ => _rawValue + siblings,
    },
  );
}