sdk_version_is_expression_in_const_context
在常量上下文中使用 is 表示式直到 2.3.2 版本才得到支援,但此程式碼需要在更早的版本上執行。
描述
#當分析器在 SDK 約束的下限低於 2.3.2 的程式碼中發現 常量上下文 中使用了 is 表示式時,會產生此診斷。在更早的版本中,在 常量上下文 中使用 is 表示式不受支援,因此此程式碼無法在早期版本的 SDK 上執行。
示例
#以下是定義了 SDK 約束下限低於 2.3.2 的 pubspec 檔案示例
yaml
environment:
sdk: '>=2.1.0 <2.4.0'在此 pubspec 檔案所在的包中,類似以下程式碼會產生此診斷
dart
const Object x = 4;
const y = x is int ? 0 : 1;常見修復
#如果您不需要支援舊版本的 SDK,則可以提高 SDK 約束以允許使用此表示式
yaml
environment:
sdk: '>=2.3.2 <2.4.0'如果您需要支援舊版本的 SDK,則要麼重寫程式碼以不使用 is 運算子,或者,如果不可能,則修改程式碼使 is 表示式不在 常量上下文 中。
dart
const Object x = 4;
var y = x is int ? 0 : 1;