dart fix
dart fix
命令查找并修复两种类型的问题
由
dart analyze
识别的、具有关联自动化修复(有时称为 快速修复 或 代码操作)的分析问题。更新到较新版本的 Dart 和 Flutter SDK 时,过时的 API 用法。
应用修复
#要预览建议的更改,请使用 --dry-run
标志
dart fix --dry-run
要应用建议的更改,请使用 --apply
标志
dart fix --apply
自定义行为
#dart fix
命令仅在诊断标识出“问题”时应用修复。某些诊断(例如编译错误)是隐式启用的,而其他诊断(例如 lints)必须在分析选项文件中显式启用,因为个人偏好各不相同。
有时可以通过启用额外的 lints 来增加可应用的修复数量。请注意,并非所有诊断都具有关联的修复。
示例
#假设你有这样的代码
class Vector2d {
final double x, y;
Vector2d(this.x, this.y);
}
class Vector3d extends Vector2d {
final double z;
Vector3d(final double x, final double y, this.z) : super(x, y);
}
Dart 2.17 引入了一个称为 super initializers 的新语言特性,它允许你使用更紧凑的风格编写 Vector3d
的构造函数
class Vector3d extends Vector2d {
final double z;
Vector3d(super.x, super.y, this.z);
}
要让 dart fix
将现有代码升级为使用此特性,并确保分析器在你日后忘记使用它时发出警告,请按如下配置你的 analysis_options.yaml
文件
linter:
rules:
- use_super_parameters
我们还需要确保代码启用了所需的语言版本。Super initializers 在 Dart 2.17 中引入,因此更新 pubspec.yaml
文件,使其 SDK 下限约束至少为该版本
environment:
sdk: ">=2.17.0 <4.0.0"
然后,在查看建议的更改时,你应该会看到以下内容
dart fix --dry-run
Computing fixes in myapp (dry run)... 9.0s
1 proposed fixes in 1 files.
lib/myapp.dart
use_super_parameters • 1 fix
要了解有关自定义分析结果和行为的更多信息,请参阅自定义静态分析。
VS Code 支持
#当你在 VS Code 中打开项目时,Dart 插件会扫描项目以查找 dart fix
可以修复的问题。如果找到可修复的问题,VS Code 会显示提示来提醒你。

运行 dart pub get
或 dart pub upgrade
后,如果包更改导致出现了 dart fix
可以修复的问题,VS Code 也可能显示此提示。
在运行 dart fix
之前保存所有文件。这确保 Dart 使用你文件的最新版本。