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

extension_override_with_cascade

拡張機能のオーバーライドには値がないため、カスケード式のレシーバーとして使用することはできません。

説明

#

カスケード式のレシーバーとして拡張機能のオーバーライドが使用されている場合、アナライザーはこの診断を生成します。カスケード式 e..m の値はレシーバー e の値ですが、拡張機能のオーバーライドは式ではなく、値がありません。

#

次のコードは、E(3) が式ではないため、この診断を生成します。

dart
extension E on int {
  void m() {}
}
f() {
  E(3)..m();
}

一般的な修正

#

.. の代わりに . を使用してください。

dart
extension E on int {
  void m() {}
}
f() {
  E(3).m();
}

複数のカスケードアクセスがある場合は、それぞれに拡張機能のオーバーライドを重複させる必要があります。