跳到主要内容

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