Learn about the removal of describeEnum and how to migrate.
The global method describeEnum has been deprecated. Previous uses
of describeEnum(Enum.something) should use
Enum.something.name instead.
The class EnumProperty was modified to
extend <T extends Enum?> instead of <T>.
Existing uses of EnumProperty<NotAnEnum> should
use DiagnosticsProperty<NotAnEnum> instead.
Dart 2.17 introduced enhanced enums, which added
Enum as a type.
As a result, all enums got a name getter, which made describeEnum
redundant. Before that, enum classes were often analyzed using an
EnumProperty.
The describeEnum method was used to convert an enum value to a string,
since Enum.something.toString() would produce Enum.something
instead
of something, which a lot of users wanted. Now, the name
getter does this.
The describeEnum function is being deprecated,
so the EnumProperty class is updated to only accept Enum
objects.
Description of change
Remove describeEnum.
- Replace
describeEnum(Enum.something)withEnum.something.name.
The EnumProperty now expects null or an Enum;
you can no longer pass it a non-Enum class.
If you previously used describeEnum(Enum.field) to access the
string value from an enum, you can now call Enum.field.name.
If you previously used EnumProperty<NotAnEnum>, you can
now use the generic DiagnosticsProperty<NotAnEnum>.
Code before migration:
dart
enum MyEnum { paper, rock }
print(describeEnum(MyEnum.paper)); // output: paper
// TextInputType is not an Enum
properties.add(EnumProperty<TextInputType>( ... ));
Code after migration:
dart
enum MyEnum { paper, rock }
print(MyEnum.paper.name); // output: paper
// TextInputType is not an Enum
properties.add(DiagnosticsProperty<TextInputType>( ... ));
Landed in version: 3.14.0-2.0.pre
In stable release: 3.16
API documentation:
Relevant issues:
Relevant PRs:
Was this page's content helpful?
Unless stated otherwise, the documentation on this site reflects Flutter 3.41.2. Page last updated on 2025-10-30. View source or report an issue.