dart - Flutter 只渲染硬编码的表情符号。动态构造的表情符号显示为纯文本

标签 dart flutter

我正在创建一个应用程序来显示从我们的 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/

相关文章:

android - 在Flutter FireBase中,Google Sign如何为我的给定代码维护持久性标志

Flutter CachedNetworkImage 不起作用,向上滚动到底部或从下到上滚动时再次加载图像

node.js - 如何解决平台 flutter 不允许的不安全http?

image - 上传前调整图像大小

dart - 在初始化程序中只能访问静态成员。 Dart2.0

Flutter 会在每次应用加载时检查日期

flutter - Flutter Web,HtmlElementView, “Removing disallowed attribute”

dart - Dart 脚本中的 Shebang 行(可移植方式)?

dart - 检查无状态小部件是否在 flutter 中处理

android - Kotlin 与 Java : What to choose when starting a new Flutter project?