概述

#

全域性方法 describeEnum 已棄用。之前對 describeEnum(Enum.something) 的使用應改用 Enum.something.name

EnumProperty 已修改為擴充套件 <T extends Enum?> 而不是 <T>EnumProperty<NotAnEnum> 的現有用法應改用 DiagnosticsProperty<NotAnEnum>

背景

#

Dart 2.17 引入了增強型列舉,它添加了 Enum 作為一種型別。因此,所有列舉都獲得了一個 name getter,這使得 describeEnum 變得多餘。在此之前,列舉類通常使用 EnumProperty 進行分析。

describeEnum 方法用於將列舉值轉換為字串,因為 Enum.something.toString() 會生成 Enum.something 而不是 something,而許多使用者想要的是後者。現在,name getter 可以實現這一點。

describeEnum 函式已被棄用,因此 EnumProperty 類已更新為僅接受 Enum 物件。

變更說明

#

移除 describeEnum

  • describeEnum(Enum.something) 替換為 Enum.something.name

EnumProperty 現在期望 null 或 an Enum;您無法再向其傳遞非 Enum 類。

遷移指南

#

如果您之前使用 describeEnum(Enum.field) 來訪問列舉的字串值,現在可以呼叫 Enum.field.name

如果您之前使用 EnumProperty<NotAnEnum>,現在可以使用泛型 DiagnosticsProperty<NotAnEnum>

遷移前的程式碼

dart
enum MyEnum { paper, rock }

print(describeEnum(MyEnum.paper)); // output: paper

// TextInputType is not an Enum
properties.add(EnumProperty<TextInputType>( ... ));

遷移後的程式碼

dart
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