rainbow static method

List<int> rainbow(
  1. int currentPage,
  2. int pageCount, {
  3. int displayCount = 10,
})

分页彩虹算法,用于生成分页导航数字

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;
}