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

Flutter:BottomNavigationBarItem用图片异常,英国国旗显示紫色求助

解决CupertinoTabBar图标色彩异常问题

问题根源

你用的ImageIcon组件是为单色图标设计的,它会强制应用主题的颜色滤镜,完全忽略原图片的色彩信息——这就是国旗变紫色、透明Z图成黑白的核心原因,哪怕你把color设为null,它还是会继承主题里的颜色值。

解决方案

直接用Image.asset替代ImageIcon,保留原图片的完整色彩:

bottomNavigationBar: CupertinoTabBar(
  backgroundColor: currentTheme.backgroundColor,
  items: [
    BottomNavigationBarItem(
      // 未选中状态的图标
      icon: Image.asset(
        'assets/images/uk_one.png',
        width: 24,
        height: 24,
      ),
      // 选中状态的图标(如需区分状态,可替换为修改后的图或加滤镜)
      activeIcon: Image.asset(
        'assets/images/uk_one.png',
        width: 24,
        height: 24,
        // 可选:选中时叠加主题色(如需轻微染色效果)
        // color: currentTheme.iconTheme.color,
        // colorBlendMode: BlendMode.srcIn,
      ),
      label: '',
    ),
    // 其他导航项
  ],
  onTap: onPageChanged,
  currentIndex: _page,
),

补充说明

  • 调整width和height适配底部导航栏尺寸,数值可根据实际情况修改。
  • 若需要区分选中/未选中状态,要么准备两张不同样式的图,要么给activeIcon的Image加colorFilter实现染色效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:01:10