Flutter插件flutter_fortune_wheel:无法修改FortuneBar中FortuneItem的颜色?
解决Flutter FortuneItem颜色自定义问题
问题出在你使用的AlternatingStyleStrategy——这个默认样式策略会覆盖单个FortuneItem的自定义样式,同时直接给child套Container也会被插件内部布局层级覆盖,所以之前的方法都没效果。
下面提供两种可行的解决方案:
方案1:直接给单个FortuneItem设置样式
移除styleStrategy参数(或替换为自定义策略),直接通过FortuneItem的style属性指定颜色:
FortuneBar( selected: StreamController<int>.broadcast().stream, items: [ for (var reward in listManager.rewardsList) FortuneItem( child: Text(reward), // 自定义item的背景色和边框色 style: FortuneItemStyle( color: Color.fromARGB(255, 245, 215, 66), borderColor: Color.fromARGB(255, 30, 30, 30), ), ), ], )
方案2:自定义全局样式策略
如果需要批量给所有item设置样式(比如交替或循环颜色),可以自定义StyleStrategy类替代默认的AlternatingStyleStrategy:
// 自定义样式策略类 class CustomWheelStyleStrategy extends StyleStrategy { @override FortuneItemStyle getStyle(int index, int itemCount) { // 可根据index设置不同颜色,比如循环使用颜色列表 final colorList = [ Color.fromARGB(255, 113, 250, 202), Color.fromARGB(255, 60, 79, 118), Color.fromARGB(255, 255, 182, 193), ]; return FortuneItemStyle( color: colorList[index % colorList.length], borderColor: Colors.white, ); } } // 在FortuneBar中使用自定义策略 FortuneBar( styleStrategy: CustomWheelStyleStrategy(), selected: StreamController<int>.broadcast().stream, items: [ for (var reward in listManager.rewardsList) FortuneItem(child: Text(reward)), ], )
注意:如果同时设置了styleStrategy和单个FortuneItem的style,策略会优先生效,单个item的样式会被忽略。
内容的提问来源于stack exchange,提问作者Furkan Smail
相关产品推荐
相关产品推荐

