我想基于从外部来源解析的名称显示Icon。现在,我在应用程序中集成了多个新闻源,如下所示:
myPages.add(new Subpage(0, "Main", FontAwesome5Regular.newspaper, "http://url.one"));
myPages.add(new Subpage(1, "Buses", MaterialCommunityIcons.bus_multiple, "http://url.one"));
其中SubPage构造函数的3-d参数是IconData。 我想根据CSV生成所需的页面。我想放在CSV行中
0, Main, FontAwesome5Regular.newspaper, "http://url.one"
1, Buses, MaterialCommunityIcons.bus_multiple, "http://url.two"
我在解析csv时没有问题,但是我不明白如何将已解析的字符串“ FontAwesome5Regular.newspaper”转换为Subpage的构造函数所需的IconData。
在没有异步/等待,捕获错误等情况下获得解决方案将是很棒的,因为我真的可以确定CSV包含任何错误,所有字符串均有效,所有类均可用
谢谢您的任何想法!
答案 0 :(得分:0)
您可以为此使用'dart:mirrors'库,但是不幸的是,库在flutter中不可用,因此您不能使用类的名称作为字符串来访问类的静态属性。您可以这样做:
IconData getIconData(String str) {
switch (str) {
case "FontAwesome5Regular.newspaper": return FontAwesome5Regular.newspaper;
case "MaterialCommunityIcons.bus_multiple": return MaterialCommunityIcons.bus_multiple;
default: return null;
}
}
答案 1 :(得分:0)
Richard Heap的出色作品:
您可以更改CSV吗?假设您要发送一个雨伞图标。而不是在一个列中发送“ MaterialIcons”,在另一列中发送“ 60222”,而不是“ MaterialIcons.beach_access”。将60222解析为一个int:var codePoint = int.parse(cp);并将您的图标设为var icon = IconData(codePoint,fontFamily:ff); – 2小时前的Richard Heap