如何在Flutter中使复选框被激活/选中后保持边框
如何在Flutter中使复选框被激活/选中后保持边框
我现在拥有的是——当选中时无边框的复选框。
我想要实现的是——当选中时有边框的复选框。
这是我当前的复选框代码:
Checkbox( value: _isChecked, onChanged: (bool value) { setState(() { _isChecked = value; }); }, checkColor: Colors.pinkAccent, activeColor: Colors.transparent, ), Text("Remember me")
admin 更改状态以发布 2023年5月22日
如果你想使用Theme
来实现这个,你可以像这样覆盖他:
runApp(MaterialApp( theme: ThemeData( checkboxTheme: CheckboxThemeData( checkColor: MaterialStateProperty.resolveWith((_) => Colors.black), fillColor: MaterialStateProperty.resolveWith((_) => Colors.transparent), side: AlwaysActiveBorderSide(), ), ), )); class AlwaysActiveBorderSide extends MaterialStateBorderSide { @override BorderSide? resolve(_) => const BorderSide(color: Colors.black54); }
你可以把它包裹在一个容器中,并设置一个边框
如何在Flutter中为小部件添加边框?
然后可以使用主题(unselectedwidgetcolor:)更改复选框的默认边框
在Flutter中更改复选框边框颜色
然后根据这些问题,我们可以同时使用,以实现我们想要的效果
bool _isChecked = false;
然后我们可以定义我们的复选框,并说如果isChecked等于true,颜色将是粉色强调,如果不是,则通过三元运算符将其更改为白色
Container( decoration: BoxDecoration( border: Border.all( color: _isChecked == true ? Colors.pinkAccent: Colors.black, width: 2.3), ), width: 24, height: 24, child: Theme( data: ThemeData(unselectedWidgetColor: Colors.white), child: Checkbox( checkColor: Colors.pinkAccent, activeColor: Colors.transparent, value: _isChecked, tristate: false, onChanged: (bool isChecked) { setState(() { _isChecked = isChecked; }); }, ), ), ),
使用上述代码,您将获得类似于此的内容
您还可以将粉色边框更改为任何您想要的颜色