Saltar al contenido principal

Comportamiento de Checkbox.fillColor actualizado

El comportamiento mejorado de `Checkbox.fillColor` aplica el color de relleno al fondo cuando el checkbox no está seleccionado.

Resumen

#

El Checkbox.fillColor se aplica ahora al fondo del checkbox cuando el checkbox no está seleccionado.

Contexto

#

Anteriormente, el Checkbox.fillColor se aplicaba al borde del checkbox cuando el checkbox no estaba seleccionado y su fondo era transparente. Con este cambio, el Checkbox.fillColor se aplica al fondo del checkbox y el borde utiliza el color de Checkbox.side cuando el checkbox no está seleccionado.

Descripción del cambio

#

El Checkbox.fillColor se aplica ahora al fondo del checkbox cuando el checkbox no está seleccionado, en lugar de utilizarse como color del borde.

Guía de migración

#

El comportamiento actualizado de Checkbox.fillColor aplica el color de relleno al fondo del checkbox en el State no seleccionado. Para obtener el comportamiento anterior, establece Checkbox.fillColor en Colors.transparent en el State no seleccionado y establece Checkbox.side en el color deseado.

Si utilizas la propiedad Checkbox.fillColor para personalizar el checkbox.

Código antes de la migración:

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,
),

Código después de la migración:

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,
),

Si utilizas la propiedad CheckboxThemeData.fillColor para personalizar el checkbox.

Código antes de la migración:

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

Código después de la migración:

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),
),

Timeline

#

Llegó en la versión: 3.10.0-17.0.pre
En la versión estable: 3.13.0

Referencias

#

Documentación de la API:

Issues relevantes:

PRs relevantes: