我正在创建一个应用程序,该应用程序将显示从Firebase数据库提取的消息。其中一些消息中包含表情符号,它们以以下格式存储:\ udd25。这就是从Instagram抓取它们的方式。
Dart要求这些实体的格式如下:\ u {dd25}。我已经创建了一个动态添加这些花括号的函数,但是问题是这些动态构造的实体没有按预期方式呈现为表情符号。
如果我将这样的表情符号硬编码:
Text('\u{dd25}');
显示的表情符号没有任何问题。
但是,当我恢复到在Instagram上重新格式化任何潜在表情符号的解决方案时:
var emoji = '\\u' + uniqueNumber; // Concatenation with '{dd25}', for example
Text(emoji);
...这将呈现实体的String表示形式,而不是实际的表情符号本身。是否可以通过某种方式“强制” Flutter识别此串联字符串为表情符号,应将其视为表情符号?
非常感谢。
我曾尝试使用substring函数从连接中必须使用的变量中删除“转义”反斜杠(以防万一这是问题所在),但这只是显示了相同的String而没有反斜杠:u {dd25}
答案 0 :(得分:1)
\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));
}
}
输出
答案 1 :(得分:0)
您需要使用JsonObject
(https://api.dartlang.org/stable/2.2.0/dart-core/String/String.fromCharCode.html)。
不可能只用\ u连接某些东西,因为那是文字构造器,而不是动态构造器。
因此,例如,它们将执行相同的操作:
sudo apt-get install php-xml
除了后者可以是从数据流中读取的值。