メインコンテンツにスキップ

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;
  }
}