如何优雅的改变Flutter中CheckBox未选中状态下的颜色

2021-04-28  本文已影响0人  spt_genius

如何优雅的改变Flutter中CheckBox未选中状态下的颜色

起因

很早在做Demo的时候就想改变下CheckBox的未选中状态的颜色,但是多是设置全局ThemeData.unselectedWidgetColor的颜色来设置。
不过可以想到的就是一个App中如果有不同颜色的变态需求的话......😂。

解决方法

一. 当然是自己重写Widget就好了,不过稍有点负责。放弃了,等后面有时间来弄下吧。

二. 想想觉得不会设计的这么差吧,就追了下源码。

    Checkbox(
        value: false,
        fillColor: MaterialStateProperty.resolveWith((Set<MaterialState> states) {
          const Set<MaterialState> interactiveStates = <MaterialState>{
            MaterialState.pressed,
            MaterialState.hovered,
            MaterialState.focused,
          };
          if (states.contains(MaterialState.disabled)) {
            return ThemeData.from(colorScheme: ColorScheme.light()).disabledColor;
          }
          if (states.contains(MaterialState.selected)) {
            return ThemeData().toggleableActiveColor;
          }
          if (states.any(interactiveStates.contains)) {
            return Colors.red;
          }
          // 最终返回
          return Colors.blue;
        }),
        onChanged: (value) {
        },
    ),
上一篇下一篇

猜你喜欢

热点阅读