Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改颤振中复选框的选中标记颜色_Android_Dart_Flutter - Fatal编程技术网

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);
                    },
            ),
          ),
        ),
      ),
    );
  }
}