You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何用字符串搭配点操作符动态调用MyCustomIcons自定义图标

实现方案

因为Flutter禁用了反射(dart:mirrors)来保证打包优化(tree shaking)的效果,所以不能直接通过字符串动态调用MyCustomIcons的同名属性,你可以通过键值映射表的方式实现需求,实现成本低、性能也稳定。

步骤1:定义图标映射表

提前把你存在Firebase里的图标字符串和对应的自定义图标一一绑定,写为一个常量Map:

// 建议单独存到一个常量文件里方便维护
const Map<String, IconData> teamIconMap = {
  'myBlue': MyCustomIcons.myBlue,
  'myRed': MyCustomIcons.myRed,
  // 其他队伍的图标依次加在这里
  'default': Icons.gamepad, // 兜底图标,匹配不到的时候用
};

步骤2:修改图标调用逻辑

取到队伍的图标字符串后,直接从映射表中取值即可,加兜底逻辑避免空异常:

Column(
  mainAxisAlignment: MainAxisAlignment.center,
  children: [
    Padding(
      padding: EdgeInsets.only(left: 10.0, right: 10.0),
      child: Text(
        teams[teamsCounter].name,
        style: widget.teamNameTextStyle,
        textAlign: TextAlign.center,
      ),
    ),
    Icon(
      // 匹配不到就用兜底图标
      teamIconMap[teams[teamsCounter].icon] ?? teamIconMap['default']!,
      size: widget.iconSize,
      color: widget.iconColor,
    ),
  ],
);

后续如果新增队伍图标,只需要在teamIconMap里加对应的键值对即可,不需要修改其他逻辑。

内容的提问来源于stack exchange,提问作者user11856923

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 00:54:04