跳到主要內容

sdk_version_extension_methods

擴充套件方法在 2.6.0 版本之前不受支援,但此程式碼需要能夠在更早的版本上執行。

描述

#

當在 SDK 約束下限小於 2.6.0 的程式碼中發現擴充套件宣告或擴充套件重寫時,分析器會生成此診斷訊息。在早期版本中不支援使用擴充套件,因此此程式碼無法在早期版本的 SDK 上執行。

示例

#

以下是定義了 SDK 約束下限小於 2.6.0 的 pubspec 示例

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

在具有該 pubspec 檔案的包中,如下所示的程式碼會生成此診斷訊息

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