Saltar al contenido principal

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) con Enum.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:

dart
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:

dart
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: