siblingRange property
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,
},
);
}