我正在创建一个应用程序来显示从我们的 Firebase 数据库中提取的消息。其中一些消息中包含表情符号,并以这种格式存储:\udd25。这就是它们从 Instagram 中被抓取的方式。
Dart 要求这些实体的格式如下:\u{dd25}。我已经创建了一个动态添加这些花括号的函数,但问题是这些动态构造的实体没有按预期呈现为表情符号。
如果我像这样硬编码一个表情符号:
Text('\u{dd25}');
表情符号显示没有任何问题。
但是,当我恢复到重新格式化 Instagram 上任何潜在表情符号的解决方案时:
var emoji = '\\u' + uniqueNumber; // Concatenation with '{dd25}', for example
Text(emoji);
...这会呈现实体的字符串表示形式,而不是实际的表情符号本身。有什么方法可以“强制”Flutter 识别这个连接的字符串是一个表情符号,应该这样对待吗?
非常感谢。
我已经尝试使用子字符串函数从我必须在连接中使用的变量中删除“转义”反斜杠,以防这是问题所在,但这只显示没有反斜杠的相同字符串:u{dd25} .
最佳答案
\u2764
是“心”表情符号的 unicode。假设这是从数据库中获取的。然后您可以将其存储在一个变量中,并直接将该变量传递给 Text
小部件,它会呈现表情符号。
String emojiCode = '\u2764'; // assume, we fetched from DB
Text(emojiCode);
完整示例
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(home: MyApp()));
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
String emojiCode = '\u2764';
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.black,
),
body: Text(emojiCode));
}
}
输出
关于dart - Flutter 只渲染硬编码的表情符号。动态构造的表情符号显示为纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55634094/