ThemeData 的 toggleableActiveColor 属性已弃用
摘要
#Material Widget Switch
、SwitchListTile
、Checkbox
、CheckboxListTile
、Radio
、RadioListTile
现在使用 ColorScheme.secondary
颜色作为其可切换 Widget 的颜色。ThemeData.toggleableActiveColor
已弃用,并最终将被移除。
上下文
#依赖于ThemeData.toggleableActiveColor
的小部件迁移到ColorScheme.secondary
导致toggleableActiveColor
属性变得多余。根据Flutter的弃用策略,此属性最终将被移除。
更改说明
#现在,使用ThemeData.toggleableActiveColor
颜色表示激活/选中状态的小部件使用ColorScheme.secondary
。
迁移指南
#可切换小部件的激活/选中颜色通常可以通过3种方式自定义
- 使用
ThemeData
的ColorScheme.secondary
。 - 使用组件主题
SwitchThemeData
、ListTileThemeData
、CheckboxThemeData
和RadioThemeData
。 - 通过自定义小部件的颜色属性。
迁移前的代码
dart
MaterialApp(
theme: ThemeData(toggleableActiveColor: myColor),
// ...
);
迁移后的代码
dart
final ThemeData theme = ThemeData();
MaterialApp(
theme: theme.copyWith(
switchTheme: SwitchThemeData(
thumbColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
return myColor;
}
return null;
}),
trackColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
return myColor;
}
return null;
}),
),
radioTheme: RadioThemeData(
fillColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
return myColor;
}
return null;
}),
),
checkboxTheme: CheckboxThemeData(
fillColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
return myColor;
}
return null;
}),
),
),
//...
)
时间线
#稳定版发布:3.7
参考
#API 文档
相关问题
相关 PR
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面上次更新于 2024-04-04。 查看源代码 或 报告问题.