San*_*osh 6 dart font-awesome flutter
我想设置使用 API 中的字符串作为 Fontawesome 图标。我已经添加了font_awesome_flutter plugin.
我需要将图标名称存储在变量中,然后从中创建一个对象。我想象它会像这样:
String iconfromApi = 'suitcase';
Icon(FontAwesomeIcons.iconfromApi);
Run Code Online (Sandbox Code Playgroud)
如此处所述,您需要有权访问该dart:mirrors包,这在 Flutter 中不可用。
在 Flutter 中可行的解决方案是创建一个辅助方法。这意味着您必须为要使用的所有图标名称编写大小写代码。如果您不想手动编写所有内容,您可以查看GitHub 评论reflectable中提到的包,或者可能是 或,但是,我不确定后两者是否很合适。source_genbuild_runner
无论如何,您也可以手写一个辅助函数,如下所示:
IconData fontAwesomeIconFromString(String name) {
switch (name) {
case 'suitecase':
return FontAwesomeIcons.suitecase;
case 'gamepad':
return FontAwesomeIcons.gamepad;
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您现在可以像这样使用它:
String iconfromApi = 'suitcase';
Icon(fontAwesomeIconFromString(iconFromApi));
Run Code Online (Sandbox Code Playgroud)