简体   繁体   English

如何更改 flutter 中的复选框边框颜色? 默认情况下,它显示为黑色,但我希望它为灰色

[英]How to change checkbox border-color in flutter? By default, it is showing black but I want it in grey

How to change checkbox border-color in flutter?如何更改 flutter 中的复选框边框颜色? By default, it is showing black but I want it in grey.默认情况下,它显示为黑色,但我希望它为灰色。

CheckBox's border color comes from unselectedWidgetColor of your ThemeData . CheckBox 的边框颜色来自ThemeDataunselectedWidgetColor

Add following ThemeData to your MaterialApp将以下ThemeData添加到您的MaterialApp

MaterialApp(
  title: 'Flutter Demo',
  debugShowCheckedModeBanner: false,
  theme: ThemeData(
    primarySwatch: Colors.blue,
    unselectedWidgetColor: Colors.red, // <-- your color
  ),
  home: MyHomePage(title: 'Flutter Demo Home Page'),
);

If you don't want to add color to the MaterialApp 's ThemeData then you can wrap your CheckBox widget with Theme widget, following is the code for your reference:如果您不想为MaterialAppThemeData添加颜色,则可以使用Theme小部件包装CheckBox小部件,以下是供您参考的代码:

Theme(
    child: Checkbox(
      value: false,
      onChanged: (_) {},
    ),
    data: ThemeData(
      primarySwatch: Colors.blue,
      unselectedWidgetColor: Colors.red, // Your color
    ),
  ),

Use this:用这个:

Checkbox(
  shape: RoundedRectangleBorder(
    borderRadius: BorderRadius.circular(2.0),
  ),
  side: MaterialStateBorderSide.resolveWith(
      (states) => BorderSide(width: 1.0, color: Colors.red),
  ),
),

You can use Theme to change the unselected widget color like given below您可以使用Theme更改未选择的小部件颜色,如下所示

Theme(
  data: ThemeData(unselectedWidgetColor: Colors.blue),
  child: Checkbox(
   ... 
   )
 )

You can also simply set the side property of your Checkbox:您也可以简单地设置 Checkbox 的side属性:

Checkbox(
      value: true,
      onChanged: (_) {},
      // Background color of your checkbox if selected
      activeColor: Colors.deepOrange,
      // Color of your check mark
      checkColor: Colors.black,
      shape: hasCircleShape
      // diplay checkbox with circle shape
          ? CircleBorder()
      // or make the border slightly rounded
          : RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(5),
            ),
      side: BorderSide(
        // ======> CHANGE THE BORDER COLOR HERE <====== 
        color: Colors.grey,
        // Give your checkbox border a custom width
        width: 1.5,
      ),
    ),

This code will help for border color change in onChanged Function.此代码将有助于 onChanged 函数中的边框颜色更改。

预习

Checkbox(
                    fillColor: MaterialStateProperty.all(Colors.transparent),
                    side: MaterialStateBorderSide.resolveWith((states) {
                      if(states.contains(MaterialState.pressed)){
                        return BorderSide(color: loginfontcolor);
                      }
                      else{
                        return BorderSide(color: loginfontcolor);
                      }
                    }),
                    checkColor: loginfontcolor,
                    shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5)),
                    value: snapshot.tapval, onChanged: (val){
                      snapshot.changval= val!;
                    },
                    
                    )
Checkbox(
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(3),
      ),
      materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
      value: true,
      onChanged: (newValue) {},

      /// Set your color here
      fillColor: MaterialStateProperty.all(Colors.grey),
    )

Simply like that:就像这样:

        Checkbox(
          side: const BorderSide(
            // set border color here
            color: Colors.red,
          ),
          value: isChecked,
          onChanged: (bool? value) {},
        ),

set color in BorderSide ⬇️在 BorderSide 中设置颜色⬇️

Checkbox(
    value: value,
    onChanged: (){},
    // YOUR COLOR HERE
    side: BorderSide(color: Colors.green)),
Checkbox(
            fillColor: MaterialStateProperty.all(consts.darkWhiteColor),
                side: MaterialStateBorderSide.resolveWith((states) {
                  if(states.contains(MaterialState.selected)){
                    return const BorderSide(color: consts.navyColor);
                  } else {
                    return const BorderSide(color: consts.greyColor);
                  }
                }),
                shape: const RoundedRectangleBorder(
                    borderRadius: BorderRadius.all(Radius.circular(3.0))),
                value: checkValue.value,
                onChanged: widget.isDisabled
                    ? null
                    : (value) {
                        checkValue.value = value ?? false;
                        widget.onChanged!(value ?? false);
                      },
                materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
                checkColor: consts.navyColor,
                activeColor: consts.darkWhiteColor,
              )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM