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