sdk_version_ui_as_code_in_const_context
在 2.5.0 版本之前,常量表達式不支援 if 和擴充套件元素,但此程式碼需要在早期版本上執行。
描述
#當分析器在 SDK 約束的下限小於 2.5.0 的程式碼中發現 常量上下文 中的 if 或擴充套件元素時,會生成此診斷。在早期版本中不支援在 常量上下文 中使用 if 或擴充套件元素,因此此程式碼無法在早期 SDK 版本上執行。
示例
#這是一個 pubspec 檔案的示例,其中定義了一個 SDK 約束,其下限小於 2.5.0
yaml
environment:
sdk: '>=2.4.0 <2.6.0'在使用此 pubspec 檔案的包中,以下程式碼會生成此診斷
dart
const a = [1, 2];
const b = [...a];常見修復方法
#如果您不需要支援舊版本的 SDK,則可以提高 SDK 約束,以允許使用該語法
yaml
environment:
sdk: '>=2.5.0 <2.6.0'如果您需要支援舊版本的 SDK,則重寫程式碼以不使用這些元素
dart
const a = [1, 2];
const b = [1, 2];如果無法做到這一點,則更改程式碼,使元素不在 常量上下文 中
dart
const a = [1, 2];
var b = [...a];