我收到 JSON 格式的图标名称。图标名称与颤动图标名称兼容。例如,如果我收到:
{ "icon":"rotate_90_degrees_ccw"}
我应该在屏幕上绘制这个图标:https://api.flutter.dev/flutter/material/Icons/rotate_90_ Degrees_ccw-constant.html
我知道,我做了自己的地图,其中键是图标的字符串名称,值可以是图标,但我应该预测每种情况,但我期望集合中的几乎每个图标:https://api.flutter。 dev/flutter/material/Icons-class.html
那么...如何以最有效的方式做到这一点?如何将字符串转换为 flutter Icon?
有很多答案建议将
String
转换为 Map<String,IconData>
.
我认为如果你的字符串图标数量有限,那就没问题,因为这种方式需要硬编码。
String rotationIcon = "rotate_90_degrees_ccw";
Map<String,IconData> icons = {rotationIcon: Icons.rotate_90_degrees_ccw}
Icon icon = Icon(icons[rotationIcon]);
如果您有 100 个可能由
API
返回的图标,您必须在该地图中对它们进行硬编码。
顺便说一句,有一些软件包可以直接将
strings
转换为icons
,例如:string2icon
这些包主要是依赖于图标硬编码构建的。
第二选择
这是多么好的一种方式,如果你的
API
返回图标的代码而不是名称,它将变得简单直接。
IconData rotateIcon = IconData(0xe53e, fontFamily: 'MaterialIcons');
Icon(rotateIcon);
0xe53e
是 API
返回的图标代码。
最后,我希望所有的标题都对你开放。
希望对您有帮助。