如何修改Flutter中Icons.verified图标的内部对勾颜色?
解决Flutter中Icons.verified内部对勾颜色修改问题
原生Icon组件无法单独修改Icons.verified内部对勾的颜色,因为该图标是单一矢量路径,color属性会控制整个图标的颜色。以下是几种可行的解决方案:
方案一:拆分基础图标组合(推荐)
直接用Stack叠加Icons.circle(背景)和Icons.check(对勾),分别控制两者的颜色,效果和原生verified图标一致且完全可控:
Stack( alignment: Alignment.center, children: [ Icon( Icons.circle, color: Colors.blue, // 背景色 size: 24, ), Icon( Icons.check, color: Colors.white, // 对勾颜色 size: 16, ), ], )
你之前用Stack效果不佳,大概率是没设置alignment或尺寸比例,上述代码已调整对齐和尺寸,可直接复用。
方案二:使用自定义SVG图标
若需要完全匹配原生Icons.verified的形状,可下载该图标的SVG文件,通过flutter_svg包导入后,直接编辑SVG内部路径的颜色属性,实现背景和对勾的颜色分离控制。
方案三:ShaderMask实现颜色拆分
通过ShaderMask裁剪区域实现颜色拆分,适合必须使用原生Icons.verified图标的场景:
ShaderMask( shaderCallback: (Rect bounds) { return LinearGradient( colors: [Colors.white, Colors.white], stops: [0.0, 1.0], ).createShader(bounds); }, blendMode: BlendMode.srcIn, child: ShaderMask( shaderCallback: (Rect bounds) { return LinearGradient( colors: [Colors.blue, Colors.blue], stops: [0.0, 1.0], ).createShader(bounds); }, blendMode: BlendMode.srcATop, child: Icon(Icons.verified, size: 24), ), )
注意:此方法需要根据图标尺寸微调渐变参数,不如方案一直观。
内容的提问来源于stack exchange,提问作者Kristi Jorgji
相关产品推荐
相关产品推荐

