如何使用unicode通过FontAwesome flutter显示图标?

P-J*_*P-J 3 dart flutter

我想知道是否可以使用 unicode 来显示带有 FontAwesome 包的图标。如果是的话,如何实现呢?

可能到底是什么问题:

这是我的 FontAwesome 使用,我需要用带有 unicode 的字符串替换 IconData


CategoriesWidget(
              icon: FontAwesomeIcons.fighterJet, // need to replace fighterJet to it's unicode (f0fb)
              color: Colors.purple[400],
              category: "Military", // it's going to be model.title (from JSON title field)
            ),

Run Code Online (Sandbox Code Playgroud)

我为什么要这样做?我通过 JSON 传递类别数据,并且必须使图标可以根据传递的数据进行更改。

JSON 的一部分

title: "Military"
icon: "f0fb" // I can change it directly to name like fighterJet but I cannot use it while it's String not IconData
Run Code Online (Sandbox Code Playgroud)

Ios*_*Pop 7

如果您查看 FontAwesomeIcons 类,您会发现所有图标都是 IconData 常量。您的 unicode 位于:

  static const IconData fighterJet = const IconDataSolid(0xf0fb);
Run Code Online (Sandbox Code Playgroud)

所以基本上如果你想使用 unicode 来获取图标,你可以使用:

String iconCode = 'f0fb';
...
Icon(IconDataSolid(int.parse('0x$iconCode')))
Run Code Online (Sandbox Code Playgroud)

编辑:来自 font_awesome_flutter 库的 icon_data.dart 文件中有多个 IconData 类,如果您使用来自不同系列的多个图标,最好也将图标系列存储在 json 中,并直接与 IconData 构造函数一起使用。它看起来像这样:

Icon(IconData(
    0xf0fb,
    fontFamily: 'FontAwesomeSolid',
    fontPackage: 'font_awesome_flutter',
  ))
Run Code Online (Sandbox Code Playgroud)