Android 更改颤振中复选框的选中标记颜色
我需要在颤振中更改复选框的复选标记颜色,并且没有为复选框中的颜色更改提供任何参数Android 更改颤振中复选框的选中标记颜色,android,dart,flutter,Android,Dart,Flutter,我需要在颤振中更改复选框的复选标记颜色,并且没有为复选框中的颜色更改提供任何参数 Checkbox( value: isCheck, activeColor: Colors.grey, onChanged: (bool value) { setState(() { isCheck = value;}); }) dart类代码 const Checkbox({ Key key, @required this.value, this
Checkbox(
value: isCheck,
activeColor: Colors.grey,
onChanged: (bool value) {
setState(() { isCheck = value;});
})
dart类代码
const Checkbox({
Key key,
@required this.value,
this.tristate = false,
@required this.onChanged,
this.activeColor,
this.materialTapTargetSize,
}) : assert(tristate != null),
assert(tristate || value != null),
super(key: key);
在您的情况下,可以使用bool变量更改它,该变量为
isCheck
,如下所示:
Checkbox(
value: isCheck,
activeColor: isCheck ? Colors.green: Colors.grey ,
onChanged: (bool value) {
setState(() { isCheck = value;});
})
现在我正在使用- 颤振(通道开发,v1.2.2) 稳定通道上不存在更改复选标记颜色的选项
Checkbox(
value: isCheck,
checkColor: Colors.yellowAccent, // color of tick Mark
activeColor: Colors.grey,
onChanged: (bool value) {
setState(() {
isCheck = value;
});
}),
要更改复选框的颜色,请执行以下操作: 不活动时(边框颜色): 选中时(图标颜色): 激活时(选中): 完整代码示例:
Theme(
data: Theme.of(context).copyWith(
unselectedWidgetColor: Colors.white,
),
child: Checkbox(
checkColor: Colors.red,
activeColor: Colors.amberAccent,
value: _terms,
onChanged: (bool value) {
setState(() {
_terms = value;
});
},
),
)
如果不想在每个复选框中设置,请使用以下选项:
new ThemeData.dark().copyWith(
unselectedWidgetColor: Colors.orange.shade800,
toggleableActiveColor: Colors.orange.shade800,
自定义复选框的我的解决方案 自定义:
- 大小
- 边界半径
- 背景
- 无边界
class-AppCheckbox扩展了无状态小部件{
最终布尔值;
残障人士;
最终双倍尺寸;
变更后的最终价值;
常量AppCheckbox({
关键点,
这个尺寸=24,
this.value=false,
this.disabled=false,
一旦改变了,
}):super(key:key);
@凌驾
小部件构建(构建上下文){
最终背景色=禁用?AppColors.white8:AppColors.white24;
最终检查颜色=禁用?AppColors.white56:Colors.white;
返回主题(
数据:Theme.of(context).copyWith(
disabledColor:Colors.transparent,
未选择的WidgetColor:Colors.transparent,
),
孩子:大小盒子(
宽度:大小,
高度:尺寸,
子:容器(
装饰:盒子装饰(
颜色:背景色,
边界半径:边界半径。圆形(4),
),
clipBehavior:Clip.hardEdge,
子:Transform.scale(
比例:size/Checkbox.width,
子项:复选框(
hoverColor:Colors.transparent,
聚焦颜色:颜色。透明,
activeColor:Colors.transparent,
checkColor:checkColor,
价值:价值,
一旦更改:禁用
无效的
:(价值){
一旦改变(价值);
},
),
),
),
),
);
}
}
我可以更改活动颜色,但想更改选中标记的颜色,感谢您的回答。您正在查看的内容显示在主机和开发分支-检查颜色运行命令颤振通道开发以切换到颤振的开发通道terminal@anmol.majhail我怎样才能回来\u CheckboxRenderObjectWidget
box对象,以便我可以实现它们的字段。@pskink不,我还没有看到。checkColor
参数未定义。这就是我在回答中提到的-从稳定更改为通道开发。运行命令flatterchanneldev
切换到终端中的flatter的dev channel。如果我筛选到stable to dev,它不会影响实时项目。flatterit不会产生这样的效果,但您可以始终向后移动-使用flatterchannel stable
。所以您可以尝试-dev通道,如果事情没有按照预期进行-恢复到稳定通道。确保运行flatterclean
删除build.build发行版apk with dev-即使在恢复到稳定状态后,该apk仍能与dev功能一起工作。在恢复到稳定状态后,dev提供的特性将在新版本中消失-是的。我很困惑-是否应该在主题中设置复选框。我的复选框的颜色始终与按钮的颜色不同。我不想在每个复选框上设置它,而是在主题中设置一次全局设置,以获得解决方案和更多选项(在我的示例中,我搜索的是未选中的WidgetColor)
Checkbox(
activeColor: Colors.amberAccent,
...
)
Theme(
data: Theme.of(context).copyWith(
unselectedWidgetColor: Colors.white,
),
child: Checkbox(
checkColor: Colors.red,
activeColor: Colors.amberAccent,
value: _terms,
onChanged: (bool value) {
setState(() {
_terms = value;
});
},
),
)
new ThemeData.dark().copyWith(
unselectedWidgetColor: Colors.orange.shade800,
toggleableActiveColor: Colors.orange.shade800,
class AppCheckbox extends StatelessWidget {
final bool value;
final bool disabled;
final double size;
final ValueChanged<bool> onChanged;
const AppCheckbox({
Key key,
this.size = 24,
this.value = false,
this.disabled = false,
this.onChanged,
}) : super(key: key);
@override
Widget build(BuildContext context) {
final backColor = disabled ? AppColors.white8 : AppColors.white24;
final checkColor = disabled ? AppColors.white56 : Colors.white;
return Theme(
data: Theme.of(context).copyWith(
disabledColor: Colors.transparent,
unselectedWidgetColor: Colors.transparent,
),
child: SizedBox(
width: size,
height: size,
child: Container(
decoration: BoxDecoration(
color: backColor,
borderRadius: BorderRadius.circular(4),
),
clipBehavior: Clip.hardEdge,
child: Transform.scale(
scale: size / Checkbox.width,
child: Checkbox(
hoverColor: Colors.transparent,
focusColor: Colors.transparent,
activeColor: Colors.transparent,
checkColor: checkColor,
value: value,
onChanged: disabled
? null
: (value) {
onChanged(value);
},
),
),
),
),
);
}
}