Flutter 如何在flatter中通过字符串名访问类的元素

Flutter 如何在flatter中通过字符串名访问类的元素,flutter,dart,Flutter,Dart,我从api中获得了font awesome的名称,我想访问font_awesome_颤振包的元素,但我在C中知道,但在颤振中不知道: 从服务器接收到: { "fontawesomeName":"breadSlice" } 在font_Asome软件包中,我可以通过下面的方式访问它的元素 IconButton( icon: FaIcon(FontAwesomeIcons.breadSlice), onPressed: () { print

我从api中获得了font awesome的名称,我想访问font_awesome_颤振包的元素,但我在C中知道,但在颤振中不知道: 从服务器接收到:

{
  "fontawesomeName":"breadSlice"
} 
在font_Asome软件包中,我可以通过下面的方式访问它的元素

 IconButton(
            icon: FaIcon(FontAwesomeIcons.breadSlice),
             onPressed: () { print("Pressed"); }
           )

但如何在flatter中访问具有字符串名称的对象的元素呢?

在字符串中按名称获取元素称为“反射”。我模模糊糊地记得普通的飞镖有它,但弗利特的飞镖没有


但是,此软件包可能会有所帮助:

这在颤振中是不可能的,因为反射被禁用。唯一的方法是创建映射。例如:

const Map<String, IconData> map = {
  "breadSlice": FontAwesomeIcons.breadSlice,
};

IconData getIcon(String iconName) {
  return map[iconName];
}
const Map={
“breadSlice”:FontAwesomeIcons.breadSlice,
};
IconData getIcon(字符串iconName){
返回地图[图标名];
}

为什么要使用字符串访问它?当前语法对于您的用例来说还不够吗?如果您真的想使用字符串id访问类成员,那么一个简单的switch case语句可以将这些字符串转换为类成员。我只从api中获取名称,而不使用idies,您可以使用if else语句或switch语句来比较字符串名称,或者使用元素的映射。