摘要

#

現在,Checkbox.fillColor 會在核取方塊未被選取時,套用到其背景上。

背景說明

#

過去,當核取方塊未被選取且背景為透明時,Checkbox.fillColor 會套用到核取方塊的邊框上。此更動後,Checkbox.fillColor 會套用到核取方塊的背景,而邊框則會使用 Checkbox.side 顏色,當核取方塊未被選取時。

變更說明

#

現在,Checkbox.fillColor 會在核取方塊未被選取時,套用到其背景上,而不再作為邊框顏色使用。

遷移指南

#

更新後的 Checkbox.fillColor 行為會在核取方塊未被選取時,將填充色(fill color)套用到其背景。若要維持先前的行為,請在未選取狀態下,將 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 屬性來自訂核取方塊(checkbox)。

遷移前的程式碼:

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: