generateDecreasingRanks static method
生成指定数量的往前递减排序字符串列表
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;
}