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

unnecessary_null_comparison

オペランドが 'null' になることはないので、条件は常に 'false' です。

オペランドが 'null' になることはないので、条件は常に 'true' です。

オペランドは 'null' でなければならないため、条件は常に 'false' です。

オペランドは 'null' でなければならないため、条件は常に 'true' です。

説明

#

アナライザーは、一方のオペランドが null で、もう一方のオペランドが null になれないような等価比較(== または !=)を見つけた場合に、この診断を生成します。このような比較は常に true または false のいずれかになるため、意味がありません。

#

以下のコードは、x が決して null にならないため、比較が常に true と評価されるという理由で、この診断を生成します。

dart
void f(int x) {
  if (x != null) {
    print(x);
  }
}

以下のコードは、x が決して null にならないため、比較が常に false と評価されるという理由で、この診断を生成します。

dart
void f(int x) {
  if (x == null) {
    throw ArgumentError("x can't be null");
  }
}

一般的な修正

#

もう一方のオペランドが null になる可能性がある場合は、オペランドの型を変更してください。

dart
void f(int? x) {
  if (x != null) {
    print(x);
  }
}

もう一方のオペランドが実際に null にならない場合は、条件を削除してください。

dart
void f(int x) {
  print(x);
}