Flutter中的动态图标

时间:2019-09-10 10:47:29

标签: database flutter icons

我从数据库检索一些数据,在该数据库中有一个名为“ icon”的列,其中存储了一些字符串。对于它们中的每一个,我都希望传递Flutter的Icon类,以收取相应的Icon费用。 我里面只有一个字符串

items[index]["icon"]

但是我无法在Icon(items[index]["icon"])内部传递它 我该怎么办?

4 个答案:

答案 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

https://pub.dev/packages/x_icon

相关问题