displayWidth property

int get displayWidth

计算字符串的显示宽度(中文字符按2个字符宽度计算)

Implementation

int get displayWidth {
  int width = 0;
  for (int i = 0; i < length; i++) {
    final char = codeUnitAt(i);
    // 中文字符范围
    if ((char >= 0x4E00 && char <= 0x9FFF) || // CJK统一汉字
        (char >= 0x3400 && char <= 0x4DBF) || // CJK扩展A
        (char >= 0x20000 && char <= 0x2A6DF) || // CJK扩展B
        (char >= 0x2A700 && char <= 0x2B73F) || // CJK扩展C
        (char >= 0x2B740 && char <= 0x2B81F) || // CJK扩展D
        (char >= 0x2B820 && char <= 0x2CEAF) || // CJK扩展E
        (char >= 0xF900 && char <= 0xFAFF) || // CJK兼容汉字
        (char >= 0x2F800 && char <= 0x2FA1F)) {
      // CJK兼容汉字补充
      width += 2;
    } else {
      width += 1;
    }
  }
  return width;
}