<

ThemeData の toggleableActiveColor プロパティは非推奨になりました

まとめ

マテリアルウィジェットSwitchSwitchListTileCheckboxCheckboxListTileRadioRadioListTile今使ってくださいColorScheme.secondary切り替え可能なウィジェットの色。ThemeData.toggleableActiveColorは非推奨であり、最終的には削除される予定です。

コンテクスト

依存するウィジェットの移行ThemeData.toggleableActiveColorColorScheme.secondaryを引き起こしたtoggleableActiveColor財産 不必要であること。 Flutter に従って、このプロパティは最終的に削除される予定です。非推奨ポリシー

変更内容の説明

使用しているウィジェットThemeData.toggleableActiveColorの色 アクティブ/選択された状態が使用されるようになりましたColorScheme.secondary

移行ガイド

切り替え可能なウィジェットのアクティブ/選択された色は、通常、次の 3 つの方法でカスタマイズできます。

  1. ThemeData の使用ColorScheme.secondary
  2. コンポーネントテーマの使用SwitchThemeDataListTileThemeDataCheckboxThemeData、 とRadioThemeData
  3. ウィジェットの色のプロパティをカスタマイズする。

移行前のコード:

MaterialApp(
  theme: ThemeData(toggleableActiveColor: myColor),
  // ...
);

移行後のコード:

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 ドキュメント:

  • ThemeData.toggleableActiveColor
  • ColorScheme.secondary

関連する問題:

  • Switchウィジェットの色は使用しませんColorScheme

関連する PR:

  • 廃止するtoggleableActiveColor