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