更新后的 `Checkbox.fillColor` 行为
摘要
#现在,当复选框未选中时,Checkbox.fillColor
将应用于复选框的背景。
背景
#以前,当复选框未选中且其背景透明时,Checkbox.fillColor
应用于复选框的边框。通过此更改,当复选框未选中时,Checkbox.fillColor
将应用于复选框的背景,而边框将使用 Checkbox.side
颜色。
更改说明
#现在,当复选框未选中时,Checkbox.fillColor
应用于复选框的背景,而不是用作边框颜色。
迁移指南
#更新的 Checkbox.fillColor
行为在未选中状态下将填充颜色应用于复选框的背景。要获得之前的行为,请在未选中状态下将 Checbox.fillColor
设置为 Colors.transparent
,并将 Checkbox.side
设置为所需颜色。
如果您使用 Checkbox.fillColor
属性来自定义复选框:
迁移前的代码:
dart
Checkbox(
fillColor: MaterialStateProperty.resolveWith((states) {
if (!states.contains(MaterialState.selected)) {
return Colors.red;
}
return null;
}),
value: _checked,
onChanged: _enabled
? (bool? value) {
setState(() {
_checked = value!;
});
}
: null,
),
迁移后的代码:
dart
Checkbox(
fillColor: MaterialStateProperty.resolveWith((states) {
if (!states.contains(MaterialState.selected)) {
return Colors.transparent;
}
return null;
}),
side: const BorderSide(color: Colors.red, width: 2),
value: _checked,
onChanged: _enabled
? (bool? value) {
setState(() {
_checked = value!;
});
}
: null,
),
如果您使用 CheckboxThemeData.fillColor
属性来自定义复选框:
迁移前的代码:
dart
checkboxTheme: CheckboxThemeData(
fillColor: MaterialStateProperty.resolveWith((states) {
if (!states.contains(MaterialState.selected)) {
return Colors.red;
}
return null;
}),
),
迁移后的代码:
dart
checkboxTheme: CheckboxThemeData(
fillColor: MaterialStateProperty.resolveWith((states) {
if (!states.contains(MaterialState.selected)) {
return Colors.transparent;
}
return null;
}),
side: const BorderSide(color: Colors.red, width: 2),
),
时间线
#包含在版本中:3.10.0-17.0.pre
稳定版本中:3.13.0
参考
#API 文档:
相关问题:
相关 PR:
除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。