如何在Flutter中使用字符串访问类成员

时间:2019-07-12 06:04:09

标签: flutter dart font-awesome

我想将API中的使用字符串设置为Fontawesome图标。我添加了font_awesome_flutter plugin
我需要将图标名称存储在变量中,然后从中创建一个对象。我想像这样:

String iconfromApi = 'suitcase';
Icon(FontAwesomeIcons.iconfromApi);

1 个答案:

答案 0 :(得分:0)

described here一样,您需要访问dart:mirrors消息,这在Flutter中不可用。

在Flutter中可以使用的解决方案是创建一个辅助方法。这意味着您必须为所有要使用的图标名称编写代码。如果您不想手工编写所有内容,可以看看reflectable中提到的GitHub comment之类的软件包,或者可能是source_genbuild_runner中的软件包,但是,我不确定后两者是否合适。

无论如何,您还可以手动编写一个帮助函数,如下所示:

IconData fontAwesomeIconFromString(String name) {
  switch (name) {
    case 'suitecase':
      return FontAwesomeIcons.suitecase;
    case 'gamepad':
      return FontAwesomeIcons.gamepad;
    // ...
  }
}

在您的代码中,您现在可以像这样使用它:

String iconfromApi = 'suitcase';
Icon(fontAwesomeIconFromString(iconFromApi));