rainbow static method
分页彩虹算法,用于生成分页导航数字
Implementation
static List<int> rainbow(int currentPage, int pageCount,
{int displayCount = 10}) {
bool isEven = displayCount % 2 == 0;
int left = displayCount ~/ 2;
int right = displayCount ~/ 2;
if (isEven) right++;
int length = pageCount < displayCount ? pageCount : displayCount;
List<int> result = List.filled(length, 0);
if (pageCount >= displayCount) {
if (currentPage <= left) {
for (int i = 0; i < length; i++) result[i] = i + 1;
} else if (currentPage > pageCount - right) {
for (int i = 0; i < length; i++)
result[i] = pageCount - displayCount + i + 1;
} else {
for (int i = 0; i < length; i++) {
result[i] = currentPage - left + i + (isEven ? 1 : 0);
}
}
} else {
for (int i = 0; i < length; i++) result[i] = i + 1;
}
return result;
}