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

sdk_version_is_expression_in_const_context

バージョン 2.3.2 まで、`is` 式を定数コンテキストで使用することはサポートされていませんでしたが、このコードはそれ以前のバージョンでも実行できるようにする必要があります。

説明

#

アナライザーは、SDK 制約の最小バージョンが 2.3.2 未満であるコードで、定数コンテキスト内の is 式が見つかった場合にこの診断を生成します。以前のバージョンでは、定数コンテキストis 式を使用することはサポートされていなかったため、このコードは SDK の以前のバージョンでは実行できません。

#

2.3.2未満の低位境界を持つSDK制約を定義する`pubspec.yaml`の例を次に示します。

yaml
environment:
  sdk: '>=2.1.0 <2.4.0'

その`pubspec.yaml`を持つパッケージでは、次のようなコードがこの診断を生成します。

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;