长度限制文本输入格式化程序和表情符号



当我在颤振文本字段中使用长度限制文本输入格式化程序并在其中一些字段中键入表情符号时,算作 3 个字符。这允许字符计数器超过限制,例如 275/250。

我尝试自己使用它打印计数器

child: Text("${Characters(messageController.text).length}/$maxCharacters", style: TextStyle(fontStyle: FontStyle.italic),),

将其保留为 1 个字符,但仍然不允许我输入 250 个表情符号。 算作 3 🌬️ 的表情符号之一是 .

有人有任何解决方案吗?

事实上,表情符号的长度不止一个,如果您需要将每个表情符号算作一个字符,您可以使用正则表达式。

void main() {
RegExp exp = new RegExp(r"([uE000-uF8FF]|uD83C[uDC00-uDFFF]|uD83D[uDC00-uDFFF]|[u2694-u2697]|uD83E[uDD10-uDD5D])");
String str = "Hello 🌬️🌬️🌬️🌬️🌬️🌬️🌬️ there";
Iterable<Match> matches = exp.allMatches(str);
int emojiLength=0;
matches.forEach((m)=>emojiLength+=m.group(0).length);
print(str.length-emojiLength+matches.length);
}

响应为 19

最新更新