跳至主要內容

更新 `Checkbox.fillColor` 行為

摘要

#

現在,當核取方塊未被選取時,Checkbox.fillColor 會應用於核取方塊的背景。

背景

#

先前,當核取方塊未被選取且背景為透明時,Checkbox.fillColor 會應用於核取方塊的邊框。 進行此變更後,當核取方塊未被選取時,Checkbox.fillColor 會應用於核取方塊的背景,而邊框則使用 Checkbox.side 的顏色。

變更說明

#

現在,當核取方塊未被選取時,Checkbox.fillColor 會應用於核取方塊的背景,而不是用作邊框顏色。

遷移指南

#

更新後的 Checkbox.fillColor 行為會在未選取狀態下將填滿顏色應用於核取方塊的背景。 若要取得先前的行為,請在未選取狀態下將 Checbox.fillColor 設定為 Colors.transparent,並將 Checkbox.side 設定為所需的顏色。

如果您使用 Checkbox.fillColor 屬性來自訂核取方塊。

遷移前的程式碼

dart
Checkbox(
  fillColor: MaterialStateProperty.resolveWith((states) {
    if (!states.contains(MaterialState.selected)) {
      return Colors.red;
    }
    return null;
  }),
  value: _checked,
  onChanged: _enabled
    ? (bool? value) {
        setState(() {
          _checked = value!;
        });
      }
    : null,
),

遷移後的程式碼

dart
Checkbox(
  fillColor: MaterialStateProperty.resolveWith((states) {
    if (!states.contains(MaterialState.selected)) {
      return Colors.transparent;
    }
    return null;
  }),
  side: const BorderSide(color: Colors.red, width: 2),
  value: _checked,
  onChanged: _enabled
    ? (bool? value) {
        setState(() {
          _checked = value!;
        });
      }
    : null,
),

如果您使用 CheckboxThemeData.fillColor 屬性來自訂核取方塊。

遷移前的程式碼

dart
checkboxTheme: CheckboxThemeData(
  fillColor: MaterialStateProperty.resolveWith((states) {
    if (!states.contains(MaterialState.selected)) {
      return Colors.red;
    }
    return null;
  }),
),

遷移後的程式碼

dart
checkboxTheme: CheckboxThemeData(
  fillColor: MaterialStateProperty.resolveWith((states) {
    if (!states.contains(MaterialState.selected)) {
      return Colors.transparent;
    }
    return null;
  }),
  side: const BorderSide(color: Colors.red, width: 2),
),

時間軸

#

已於版本中發布:3.10.0-17.0.pre
在穩定版本中:3.13.0

參考資料

#

API 文件

相關問題

相關的 PR