目录

dart fix

dart fix 命令查找并修复两种类型的问题

  • dart analyze 识别出的具有关联自动修复(有时称为快速修复代码操作)的分析问题。

  • 在更新到较新版本的 Dart 和 Flutter SDK 时过时的 API 用法。

应用修复

#

要预览建议的更改,请使用 --dry-run 标志

$ dart fix --dry-run

要应用建议的更改,请使用 --apply 标志

$ dart fix --apply

自定义行为

#

只有在诊断识别出“问题”时,dart fix 命令才会应用修复。某些诊断,如编译错误,是隐式启用的,而另一些诊断,如 lints,必须在分析选项文件中显式启用,因为这些诊断的个人偏好各不相同。

有时,您可以通过启用额外的 lints 来增加可以应用的修复数量。请注意,并非所有诊断都有关联的修复。

示例

#

假设您有如下代码

dart
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 引入了一个名为超级初始化器的新语言特性,它允许您以更紧凑的风格编写 Vector3d 的构造函数

dart
class Vector3d extends Vector2d {
  final double z;
  Vector3d(super.x, super.y, this.z);
}

要使 dart fix 能够将现有代码升级为使用此特性,并确保分析器在您稍后忘记使用它时发出警告,请按如下方式配置您的 analysis_options.yaml 文件

yaml
linter:
  rules:
    - use_super_parameters

我们还需要确保代码启用了所需的语言版本。超级初始化器是在 Dart 2.17 中引入的,因此请更新 pubspec.yaml,使其在较低的 SDK 约束中至少包含该版本

yaml
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 会显示一个提示来提醒您。

VS Code notification about 'dart fix'

在运行 dart pub getdart pub upgrade 后,如果软件包更改添加了 dart fix 可以修复的问题,VS Code 也可能会显示此提示。

在运行 dart fix 之前保存所有文件。这可确保 Dart 使用文件的最新版本。