我想在文本小部件中显示一个字符串,其中有一些表情符号。但字符串是unicode数字的格式,如“U+1F44C”。我正在尝试将其显示为表情符号:👌.
我尝试将字符串格式化为 \u{xxxx}:
final str = "\\u{${unicodeString}}";
但它不起作用。它只显示原始字符串
\u{1f44c}
这显示了
\u{1f44c}
,因为当您指定多个反斜杠(如 \\u
)时,flutter/dart 会将整个文本视为普通字符串类型数据。
如果指定
\u
那么 flutter 预计下一个字符将是 十六进制特殊字符 并在 flutter 将文本渲染到 UI 时将此字符串视为十六进制特殊字符字符串数据,在此期间 flutter 引擎会转换十六进制特殊字符字符串并渲染相应的表情符号。
所以你应该使用实际的十六进制特殊字符串,如
final str = "\u{1f44c}";
,那么输出将是这样的👌。
您可以简单地复制表情符号并将其粘贴到“”或“”之间,如下所示:
final str = "👌";
让使用代码对我来说很好用:
String decodeUnicode(String input) {
// Biểu thức regex tìm tất cả các unicode escape sequences dạng \\u{xxxx}
final RegExp regex = RegExp(r'\\u\{([A-Fa-f0-9]+)\}');
// Thay thế từng unicode sequence thành biểu tượng tương ứng
return input.replaceAllMapped(regex, (match) {
final hexCode = match.group(1);
if (hexCode != null) {
// Chuyển đổi từ mã hex sang biểu tượng thực tế
final emoji = String.fromCharCode(int.parse(hexCode, radix: 16));
return emoji;
}
return match.group(0)!; // trả lại nếu không decode được
});
}