toUnitString method

String toUnitString({
  1. String? wUnitString,
  2. int wDecimalDigits = 1,
  3. String? kUnitString,
  4. int kDecimalDigits = 1,
})

将数字转为含单位的字符串,如 221234 = 22.1w

Implementation

String toUnitString({
  String? wUnitString, // 万的单位(如 w 、万 等,为空表示不处理万级别)
  int wDecimalDigits = 1, // 万的小数个数(默认保存小数后一位)
  String? kUnitString,
  int kDecimalDigits = 1, // 万的小数个数(默认保存小数后一位)
}) {
  String countValueString;
  String countUnitString;

  // 是否处理 万 级别
  if (this > 10000 && wUnitString != null) {
    double countvalue = this / 10000;
    int dotIndex = countvalue.toString().lastIndexOf("."); // 小数点的位置
    countValueString =
        countvalue.toString().substring(0, dotIndex + 1 + wDecimalDigits);
    countUnitString = wUnitString;
    return '$countValueString$countUnitString';
  }

  // 是否处理 千 级别

  if (this > 1000 && kUnitString != null) {
    double countvalue = this / 1000;
    int dotIndex = countvalue.toString().lastIndexOf("."); // 小数点的位置
    countValueString =
        countvalue.toString().substring(0, dotIndex + 1 + kDecimalDigits);
    countUnitString = kUnitString;
    return '$countValueString$countUnitString';
  }

  countValueString = "$this";
  countUnitString = '';

  return '$countValueString$countUnitString';
}