我有一个JSON格式的服务器上的客户端配置。
示例JSON类似于{“ icon”:“ facebook”}
我在下面的小部件。
class MySocialIcons extends StatelessWidget { MySocialIcons({this.icon, this.color}); final String icon; final String color; @override Widget build(BuildContext context) { switch(icon) { case 'facebook': { return Icon(FontAwesomeIcons.facebook, color: HexColor(color)); } break; case 'twitter': { return Icon(FontAwesomeIcons.twitter, color: HexColor(color)); } break; default: { return Icon(FontAwesomeIcons.home, color: HexColor(color)); } break; } } }
有没有一种方法不必为500个字体很棒的图标编写500个switch语句?格式是
FontAwesomeIcons.facebook 我的字符串值“ facebook”将附加在FontAwesomeIcons的末尾。我正在寻找一种只在字符串中写入所需内容的方法,它可以返回正确的图标小部件。
FontAwesomeIcons.facebook
您可以通过两种方法消除某些代码重复。
切换语句
IconData getIconForName(String iconName) { switch(iconName) { case 'facebook': { return FontAwesomeIcons.facebook; } break; case 'twitter': { return FontAwesomeIcons.twitter; } break; default: { return FontAwesomeIcons.home; } } }
构建功能
@override Widget build(BuildContext context) { return Icon(getIconForName(icon), color: HexColor(color)); }
或2. 创建地图
Map<String, IconData> iconMapping = { 'facebook' : FontAwesomeIcons.facebook, 'twitter' : FontAwesomeIcons.twitter, 'home' : FontAwesomeIcons.home };
@override Widget build(BuildContext context) { return Icon(iconMapping [icon], color: HexColor(color)); }