pattern_constant_from_deferred_library
延遲載入庫中的常量值不能用於模式。
描述
#當模式包含在不同庫中宣告的值,並且該庫是使用延遲匯入(deferred import)匯入時,分析器會生成此診斷。常量在編譯時求值,但延遲載入庫中的值在編譯時不可用。
更多資訊,請參閱延遲載入庫。
示例
#給定一個定義常量 zero 的檔案 a.dart
dart
const zero = 0;以下程式碼會產生此診斷,因為常量模式 a.zero 是使用延遲匯入匯入的
dart
import 'a.dart' deferred as a;
void f(int x) {
switch (x) {
case a.zero:
// ...
break;
}
}常見修復
#如果你需要引用匯入庫中的常量,則移除 deferred 關鍵字
dart
import 'a.dart' as a;
void f(int x) {
switch (x) {
case a.zero:
// ...
break;
}
}如果你既需要引用匯入庫中的常量,又需要匯入庫是延遲載入的,則將 switch 語句重寫為一系列 if 語句
dart
import 'a.dart' deferred as a;
void f(int x) {
if (x == a.zero) {
// ...
}
}如果你不需要引用該常量,則替換 case 表示式
dart
void f(int x) {
switch (x) {
case 0:
// ...
break;
}
}