LengthLimitingTextInputFormatter и emojis - PullRequest
       0

LengthLimitingTextInputFormatter и emojis

0 голосов
/ 09 февраля 2020

Когда я использую LengthLimitingTextInputFormatter в текстовом поле флаттера и набираю смайлики, в некоторых из них считается 3 символа. Это позволяет счетчику символов на go превышать предел, например, 275/250.

Я попытался напечатать счетчик сам, используя этот

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

, который сохраняет его как 1 символ, но он все еще не позволяет мне вводить 250 смайликов. Emo Один из смайликов, который считается как 3 - это ?️.

Есть ли у кого-нибудь решения?

1 Ответ

0 голосов
/ 09 февраля 2020

На самом деле длина смайликов больше единицы. Если вам нужно считать каждый смайлик как один символ, вы можете использовать регулярные выражения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...