跳至主要内容

ThemeData 的 toggleableActiveColor 属性已弃用

摘要

#

Material Widget SwitchSwitchListTileCheckboxCheckboxListTileRadioRadioListTile 现在使用 ColorScheme.secondary 颜色作为其可切换 Widget 的颜色。ThemeData.toggleableActiveColor 已弃用,并最终将被移除。

上下文

#

依赖于ThemeData.toggleableActiveColor的小部件迁移到ColorScheme.secondary导致toggleableActiveColor属性变得多余。根据Flutter的弃用策略,此属性最终将被移除。

更改说明

#

现在,使用ThemeData.toggleableActiveColor颜色表示激活/选中状态的小部件使用ColorScheme.secondary

迁移指南

#

可切换小部件的激活/选中颜色通常可以通过3种方式自定义

  1. 使用ThemeDataColorScheme.secondary
  2. 使用组件主题SwitchThemeDataListTileThemeDataCheckboxThemeDataRadioThemeData
  3. 通过自定义小部件的颜色属性。

迁移前的代码

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