generateDecreasingRanks static method

List<String> generateDecreasingRanks(
  1. LexoDataScale scale, {
  2. String? end,
})

生成指定数量的往前递减排序字符串列表 scale 数据量级配置 end 结束位置的排序字符串,如果不传入则根据scale自动计算起始位置

Implementation

static List<String> generateDecreasingRanks(LexoDataScale scale,
    {String? end}) {
  final count = scale.value;
  final List<String> ranks = [];

  // 如果没有指定end,根据scale计算合适的起始位置
  String currentRank;
  if (end == null) {
    // 根据数据量级选择起始位置,确保有足够的空间往前递减
    switch (scale) {
      case LexoDataScale.hundredThousand:
        currentRank = 'M00000'; // 从中位偏后开始
        break;
      case LexoDataScale.million:
        currentRank = 'f00000'; // 从偏后位置开始
        break;
      case LexoDataScale.tenMillion:
        currentRank = 'p00000'; // 从更靠后位置开始
        break;
      case LexoDataScale.hundredMillion:
        currentRank = 'z00000'; // 从接近最大值开始
        break;
    }
  } else {
    currentRank = end;
  }

  // 生成递减序列
  for (int i = 0; i < count; i++) {
    ranks.add(currentRank);
    currentRank = _getPrevious(currentRank);

    // 如果到达最小值,停止生成
    if (currentRank == _minRank) {
      break;
    }
  }

  return ranks;
}