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
相关产品推荐
相关产品推荐

