迁移 AccentColor:如何更改 RadioListTile 和 SwitchListTile 颜色?

Migrating AccentColor: How to change RadioListTile and SwitchListTile colors?

新版本的 Flutter(从 2.5 开始)弃用了 ThemeData 中的 accentColor 属性,现在必须从 colorScheme 将其作为辅助颜色处理 colorScheme: ColorScheme.fromSwatch().copyWith (secondary: newColorForAccent))

如我所见,这还不够,因为在 Flutter 中还使用了 accentColor 来定义 CheckBoxTile 和 SwitchListTile 等其他小部件的颜色。

我在main中的ThemeData如下:

    theme: ThemeData(
      primaryColor: Color (0xFF4BD1FF),
      colorScheme: ColorScheme.fromSwatch().copyWith(secondary: Color (0xFFD8A21B)),
      //textTheme and others
    ),

如何重新定义这些小部件的颜色,以便它可以在整个应用程序中使用?

我通过反复试验找到了解决方案。我把它留在这里以防它对某人有用。基本上需要的是为 ThemeData 中的每个组件定义主题。这是一个例子:

  checkboxTheme: CheckboxThemeData(
    checkColor: MaterialStateProperty.all(Colors.white),
    fillColor: MaterialStateProperty.all(Color (0xFFD8A21B))
  ),
  switchTheme: SwitchThemeData(
    thumbColor: MaterialStateProperty.all(Color (0xFFD8A21B)),
    trackColor: MaterialStateProperty.all(Color (0x66D8A21B)),
  ),
  radioTheme: RadioThemeData(
    fillColor: MaterialStateProperty.all(Color (0xFFD8A21B))
  ),

因为这是主要的一部分,所以不要忘记在实施后总是完全重启。在这种情况下,Flutter Hot reload 不会显示任何更改。