我从数据库检索一些数据,在该数据库中有一个名为“ icon”的列,其中存储了一些字符串。对于它们中的每一个,我都希望传递Flutter的Icon类,以收取相应的Icon费用。 我里面只有一个字符串
items[index]["icon"]
但是我无法在Icon(items[index]["icon"])
内部传递它
我该怎么办?
答案 0 :(得分:3)
您可以通过直接使用Text()
小部件访问“材质图标”字体来将图标直接使用其字面名称。
示例:
Text(
'perm_contact_calendar',
style: TextStyle(fontFamily: 'MaterialIcons'),
);
您可以将其用于自定义Icon类,以与Material Framework顺利集成,但是在这种情况下,您将需要--no-tree-shake-icons
标志用于构建命令,因为非恒定IconData构造函数会破坏图标树的抖动。
答案 1 :(得分:1)
这可能会在将来对某人有所帮助。
您无需使用任何Map即可通过动态名称创建图标(复制粘贴过多)。 您可以使用Icons Class中的图标数字标识符来代替图标名称。
示例:
int iconCode = 58840;
// Will display "Up arrow" icon from the list
Icon(IconData(iconCode, fontFamily: 'MaterialIcons'));
答案 2 :(得分:0)
您需要从字符串到图标的映射,或者是Icons或FontAwesomeIcons或...
Map<String, IconData> iconMapping = {
'facebook' : FontAwesomeIcons.facebook,
'twitter' : FontAwesomeIcons.twitter,
'home' : FontAwesomeIcons.home,
'audiotrack' : Icons.audiotrack,
};
@override
Widget build(BuildContext context) {
return Icon(iconMapping [icon], color: HexColor(color));
}
类似的问答
Trying to dynamically set the Icon based on a JSON string value
Flutter: Show different icons based on value
答案 3 :(得分:0)
尝试一下。这正是您要寻找的东西。
import java.security.Principal;
/** More imports */
@GetMapping("/userinfo")
public String userInfoController(Model model, Principal principal) {
KeycloakAuthenticationToken keycloakAuthenticationToken = (KeycloakAuthenticationToken) principal;
AccessToken accessToken = keycloakAuthenticationToken.getAccount().getKeycloakSecurityContext().getToken();
model.addAttribute("username", accessToken.getGivenName());
return "page";
}
https://github.com/bridgedxyz/dynamic/tree/master/flutter-packages/x_icon