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

sdk_version_extension_methods

拡張メソッドはバージョン 2.6.0 までサポートされていませんでしたが、このコードは以前のバージョンで実行できるようにする必要があります。

説明

#

アナライザーは、SDK 制約の最下限が 2.6.0 未満であるコードで拡張宣言または拡張オーバーライドが検出された場合に、この診断を生成します。拡張機能は以前のバージョンではサポートされていなかったため、このコードは SDK の以前のバージョンでは実行できません。

#

以下は、2.6.0 未満の最下限を持つ SDK 制約を定義する pubspec の例です。

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

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

dart
extension E on String {
  void sayHello() {
    print('Hello $this');
  }
}

一般的な修正

#

古いバージョンのSDKをサポートする必要がない場合は、SDK制約を増やして構文を使用できるようにすることができます。

yaml
environment:
  sdk: '>=2.6.0 <2.7.0'

古いバージョンの SDK をサポートする必要がある場合は、拡張機能を使用しないようにコードを書き換えてください。これを行う最も一般的な方法は、拡張機能のメンバーを、`this` にバインドされていた値をパラメーターとして取るトップレベル関数(またはメソッド)に書き換えることです。

dart
void sayHello(String s) {
  print('Hello $s');
}