我有一个位于服务器上的 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法不必为 500 个很棒的字体图标编写 500 个 switch 语句?格式是
FontAwesomeIcons.facebook
我的字符串值“facebook”将附加在 FontAwesomeIcons 的末尾。我正在寻找一种方法来在字符串中写入我想要的任何内容,并且它返回正确的图标小部件。
有两种方法可以消除一些重复的代码。
switch语句
IconData getIconForName(String iconName) {
switch(iconName) {
case 'facebook': {
return FontAwesomeIcons.facebook;
}
break;
case 'twitter': {
return FontAwesomeIcons.twitter;
}
break;
default: {
return FontAwesomeIcons.home;
}
}
}
Run Code Online (Sandbox Code Playgroud)
构建函数
@override
Widget build(BuildContext context) {
return Icon(getIconForName(icon), color: HexColor(color));
}
Run Code Online (Sandbox Code Playgroud)
或 2.创建地图
Map<String, IconData> iconMapping = {
'facebook' : FontAwesomeIcons.facebook,
'twitter' : FontAwesomeIcons.twitter,
'home' : FontAwesomeIcons.home
};
Run Code Online (Sandbox Code Playgroud)
构建函数
@override
Widget build(BuildContext context) {
return Icon(iconMapping [icon], color: HexColor(color));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6153 次 |
最近记录: |