pattern_constant_from_deferred_library
遅延ロードされたライブラリからの定数値は、パターンで使用できません。
説明
#パターンに、別のライブラリで宣言された値が含まれており、そのライブラリが遅延インポートでインポートされている場合に、アナライザーはこの診断を生成します。定数はコンパイル時に評価されますが、遅延ライブラリからの値はコンパイル時には利用できません。
詳細については、ライブラリの遅延ロード を参照してください。
例
#定数 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;
}
}