describeEnum 和 EnumProperty 迁移指南
摘要
#全局方法 describeEnum
已弃用。以前使用 describeEnum(Enum.something)
的地方应改为使用 Enum.something.name
。
EnumProperty
类已修改为扩展 <T extends Enum?>
而不是 <T>
。现有使用 EnumProperty<NotAnEnum>
的地方应改为使用 DiagnosticsProperty<NotAnEnum>
。
上下文
#Dart 2.17 引入了 增强枚举,其中添加了 Enum
作为类型。因此,所有枚举都获得了 name
获取器,这使得 describeEnum
变得冗余。在此之前,枚举类通常使用 EnumProperty
进行分析。
describeEnum
方法用于将枚举值转换为字符串,因为 Enum.something.toString()
会生成 Enum.something
而不是 something
,而许多用户希望得到后者。现在,name
获取器可以实现此功能。
describeEnum
函数即将弃用,因此 EnumProperty
类已更新为仅接受 Enum
对象。
更改说明
#移除 describeEnum
。
- 将
describeEnum(Enum.something)
替换为Enum.something.name
。
EnumProperty
现在期望为 null 或 Enum
;您不能再将非 Enum
类传递给它。
迁移指南
#如果您之前使用 describeEnum(Enum.field)
访问枚举的字符串值,现在可以调用 Enum.field.name
。
如果您之前使用 EnumProperty<NotAnEnum>
,现在可以使用泛型 DiagnosticsProperty<NotAnEnum>
。
迁移前的代码
enum MyEnum { paper, rock }
print(describeEnum(MyEnum.paper)); // output: paper
// TextInputType is not an Enum
properties.add(EnumProperty<TextInputType>( ... ));
迁移后的代码
enum MyEnum { paper, rock }
print(MyEnum.paper.name); // output: paper
// TextInputType is not an Enum
properties.add(DiagnosticsProperty<TextInputType>( ... ));
时间线
#包含在版本中:3.14.0-2.0.pre
稳定版发布:3.16
参考文献
#API 文档
相关问题
相关 PR
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面最后更新于 2024-04-04。 查看源代码 或 报告问题.