getPages method
Implementation
List<num> getPages(num page, num pagesCount, num paginationSize) {
List<num> result = [];
if (pagesCount == 1) {
result.add(1);
return result;
}
if (pagesCount < page) {
return result;
}
if (pagesCount < paginationSize + 1) {
for (var i = 2; i < pagesCount + 1; i++) {
result.add(i);
}
return result;
}
if (page == 1) {
for (var i = 2; i < paginationSize + 1; i++) {
if (i < pagesCount) {
result.add(i);
}
}
return result;
}
if (page == pagesCount) {
for (var i = pagesCount - paginationSize + 1; i <= pagesCount; i++) {
if (i <= pagesCount) {
result.add(i);
}
}
return result;
}
var shiftCount = (paginationSize / 2).floor();
if (shiftCount < 1) {
result.add(page);
return result;
}
if (page < shiftCount + 2) {
for (var i = 2; i < paginationSize + 1; i++) {
result.add(i);
}
return result;
}
if (pagesCount - page < shiftCount + 2) {
for (var i = pagesCount - paginationSize + 1; i < pagesCount + 1; i++) {
result.add(i);
}
return result;
}
for (var i = page - shiftCount; i < page; i++) {
if (i > 0) {
result.add(i);
}
}
result.add(page);
for (var i = page + 1; i < page + shiftCount + 1; i++) {
if (i <= pagesCount) {
result.add(i);
}
}
return result;
}