gpt4 book ai didi

dart - 尝试根据 JSON 字符串值动态设置图标

转载 作者:行者123 更新时间:2023-12-03 02:49:33 26 4
gpt4 key购买 nike

我在服务器上有一个 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 的末尾。我正在寻找一种方法来在字符串中写入我想要的任何内容并返回正确的图标小部件。

最佳答案

有两种方法可以消除一些代码重复。

  1. 通过移除开关并将其移动到它自己的函数中,这样您的构建方法就不会重复。

切换语句

 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

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));
}

关于dart - 尝试根据 JSON 字符串值动态设置图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55008344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com