Guía de migración para describeEnum y EnumProperty
Aprende sobre la eliminación de describeEnum y cómo migrar.
Resumen
#El método global describeEnum ha sido depreciado. Los usos anteriores
de describeEnum(Enum.something) deberían usar
Enum.something.name en su lugar.
La clase EnumProperty fue modificada para
extender <T extends Enum?> en lugar de <T>.
Los usos existentes de EnumProperty<NotAnEnum> deberían
usar DiagnosticsProperty<NotAnEnum> en su lugar.
Contexto
#Dart 2.17 introdujo los enums mejorados (enhanced enums), los cuales añadieron
Enum como un tipo.
Como resultado, todos los enums obtuvieron un getter name, lo que hizo redundante a describeEnum.
Antes de eso, las clases enum a menudo se analizaban usando un
EnumProperty.
El método describeEnum se utilizaba para convertir un valor de enum a una cadena,
ya que Enum.something.toString() produciría Enum.something
en lugar
de something, lo cual querían muchos usuarios. Ahora, el getter name
hace esto.
La función describeEnum está siendo depreciada,
por lo que la clase EnumProperty se actualiza para aceptar únicamente objetos Enum.
Descripción del cambio
#Eliminar describeEnum.
- Reemplazar
describeEnum(Enum.something)conEnum.something.name.
La clase EnumProperty ahora espera null o un Enum;
ya no puedes pasarle una clase que no sea Enum.
Guía de migración
#Si anteriormente utilizabas describeEnum(Enum.field) para acceder al
valor de tipo cadena (string) de un enum, ahora puedes llamar a Enum.field.name.
Si anteriormente utilizabas EnumProperty<NotAnEnum>, ahora puedes
usar el genérico DiagnosticsProperty<NotAnEnum>.
Código antes de la migración:
enum MyEnum { paper, rock }
print(describeEnum(MyEnum.paper)); // output: paper
// TextInputType is not an Enum
properties.add(EnumProperty<TextInputType>( ... ));
Código después de la migración:
enum MyEnum { paper, rock }
print(MyEnum.paper.name); // output: paper
// TextInputType is not an Enum
properties.add(DiagnosticsProperty<TextInputType>( ... ));
Timeline
#Llegó en la versión: 3.14.0-2.0.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.