ThemeData 的 toggleableActiveColor 屬性已被棄用
使用 toggleableActiveColor 屬性的 Material 元件 (Widgets) 已遷移至使用 Material ColorScheme。
摘要
#
Material 元件 (Widgets) Switch、SwitchListTile、Checkbox、
CheckboxListTile、Radio、RadioListTile 現在會為其可切換元件
使用 ColorScheme.secondary 顏色。
ThemeData.toggleableActiveColor 已被棄用,並且最終將會被移除。
背景
#
依賴於 ThemeData.toggleableActiveColor 的元件已遷移至 ColorScheme.secondary,
因此 toggleableActiveColor 屬性已不再需要。根據 Flutter 的
棄用政策,此屬性最終將會被移除。
變更說明
#
原本使用 ThemeData.toggleableActiveColor 顏色來表示
啟用/選取狀態的元件,現在改為使用 ColorScheme.secondary。
遷移指南
#可切換元件的啟用/選取顏色一般可透過以下三種方式自訂:
- 使用 ThemeData 的
ColorScheme.secondary。 -
使用元件主題
SwitchThemeData、ListTileThemeData、CheckboxThemeData和RadioThemeData。 - 直接自訂元件的顏色屬性。
遷移前的程式碼:
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 文件:
相關議題:
相關 PR:
Unless stated otherwise, the documentation on this site reflects Flutter 3.44.0. Page last updated on 2026-06-14. View source or report an issue.