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