Flutter unicode 数字到表情符号

问题描述 投票:0回答:3

我想在文本小部件中显示一个字符串,其中有一些表情符号。但字符串是unicode数字的格式,如“U+1F44C”。我正在尝试将其显示为表情符号:👌.

我尝试将字符串格式化为 \u{xxxx}:

final str = "\\u{${unicodeString}}";

但它不起作用。它只显示原始字符串

\u{1f44c}

flutter
3个回答
3
投票

这显示了

\u{1f44c}
,因为当您指定多个反斜杠(如
\\u
)时,flutter/dart 会将整个文本视为普通字符串类型数据。

如果指定

\u
那么 flutter 预计下一个字符将是 十六进制特殊字符 并在 flutter 将文本渲染到 UI 时将此字符串视为十六进制特殊字符字符串数据,在此期间 flutter 引擎会转换十六进制特殊字符字符串并渲染相应的表情符号。

所以你应该使用实际的十六进制特殊字符串,如

final str = "\u{1f44c}";
,那么输出将是这样的👌。


0
投票

您可以简单地复制表情符号并将其粘贴到“”或“”之间,如下所示:

final str = "👌";

0
投票

让使用代码对我来说很好用:

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

© www.soinside.com 2019 - 2024. All rights reserved.