siblingRange property
The start and end pages to display around the current page.
Implementation
(int, int) get siblingRange {
final int rangeStart;
final int rangeEnd;
if (pages.isFinite) {
final last = pages - 1;
if (pages <= minPagesDisplayedAtEdges) {
return (0, last);
}
rangeStart = switch (_page) {
_ when _page - siblings < 0 => 0,
_ when _page > (last - minPagesDisplayedAtEdges) => (last - minPagesDisplayedAtEdges) - siblings,
_ when _page <= minPagesDisplayedAtEdges => 0,
_ => _page - siblings,
};
rangeEnd = switch (_page) {
_ when _page + siblings > last => last,
_ when _page < minPagesDisplayedAtEdges + 1 => minPagesDisplayedAtEdges + siblings,
_ when _page >= (last - minPagesDisplayedAtEdges) => last,
_ => _page + siblings,
};
} else {
rangeStart = switch (_page) {
_ when _page - siblings < 0 => 0,
_ when _page <= minPagesDisplayedAtEdges => 0,
_ => _page - siblings,
};
rangeEnd = switch (_page) {
_ when _page < minPagesDisplayedAtEdges + 1 => minPagesDisplayedAtEdges,
_ => _page + siblings,
};
}
return (rangeStart, rangeEnd);
}