Paint.enableDithering ahora es true por defecto.
Obsolescencia de `Paint.enableDithering` configurable por el usuario.
Resumen
#Paint.enableDithering
ahora es true por defecto (anteriormente, false),
y está marcado como obsoleto en espera de su eliminación; Flutter ya no admite
configuraciones de dithering (difuminado) configurables por el usuario.
Además, la documentación de dithering indica que el soporte es solo para gradientes.
Contexto
#Paint.enableDithering
se añadió como una opción global en el PR 13868 como
respuesta al Issue 44134, que informaba que los gradientes en Flutter tenían
artefactos de bandas visibles:
Los gradientes actualmente tienen muchas bandas de color en todos los dispositivos, y también se ve muy extraño al usar la animación de pulso. Una solución es hacer que los gradientes sean opacos y usar gradientes con dithering con Skia. Los gradientes con dithering no están expuestos actualmente, por lo que agregar un parámetro dither a la clase Paint de dart:ui sería agradable. Podríamos dibujar manualmente nuestros gradientes con un CustomPainter.
El Issue 118073 reportó que los gradientes en nuestro nuevo
motor de renderizado Impeller
mostraban artefactos de bandas visibles en algunos gradientes.
Más tarde se descubrió que Impeller no admitía la propiedad (rara vez utilizada)
Paint.enableDithering.
Después de agregar soporte de dithering a Impeller (PR 44181, PR 44331, PR 44522) y revisar el impacto en el rendimiento del dithering (despreciable), se realizaron las siguientes observaciones:
- Consenso de que los gradientes se ven bien por defecto: Issue 112498.
- Tener una opción global estaba destinado a ser obsoleto: PR 13868.
Esto resultó en las siguientes decisiones:
- Hacer que el dithering esté activado por defecto.
- Marcar como obsoleta la opción global.
- Eliminar la opción global en una versión futura.
Como parte de ese proceso, la capacidad de que el dithering afecte a cualquier otra cosa que no sean gradientes se eliminó en el PR 44730 y el PR 44912. Esto se hizo para facilitar el proceso de migración, porque Impeller nunca admitirá el dithering para nada que no sean gradientes.
Guía de migración
#La mayoría de los usuarios y librerías no necesitarán realizar ningún cambio.
Para los usuarios que mantienen pruebas visuales (golden tests), es posible
que debas actualizar tus imágenes de referencia (goldens) para reflejar el nuevo valor predeterminado.
Por ejemplo, si usas matchesGoldenFile
para
probar un widget que contiene un gradiente:
flutter test --update-goldens
Aunque no se espera que sea un caso común, puedes
desactivar el dithering temporalmente estableciendo la propiedad enableDithering en
tu método main() (ya sea en una aplicación o en una prueba):
void main() {
// TODO: Remove this after XYZ.
Paint.enableDithering = false;
runApp(MyApp());
}
Dado que el plan es eliminar permanentemente la propiedad enableDithering, por favor
proporciona tus comentarios en el Issue 112498
si tienes un caso de uso que requiera
desactivar el dithering (debido a rendimiento o caídas del sistema).
Si por alguna razón debes dibujar gradientes sin dithering, tendrás que escribir tu propio shader personalizado. Describir eso está fuera del alcance de esta guía de migración, pero puedes encontrar algunos recursos y ejemplos:
NOTA: Flutter web no admite dithering: Issue 134250.
Timeline
#Introducido en la versión: 3.14.0-0.1.pre
En la versión estable: 3.16
Referencias
#Documentación de la API:
Issues relevantes:
PRs relevantes:
A menos que se indique lo contrario, la documentación de este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 2026-05-05. Ver código fuente oreportar un problema.