跳到主要内容

avoid_init_to_null

稳定
推荐
有可用的修复

不要将变量显式初始化为 null

详情

#

来自 Effective Dart

不要 将变量显式初始化为 null

如果变量是不可空类型或为 final,则如果在明确初始化之前尝试使用它,Dart 会报告编译错误。如果变量是可空类型且不是 constfinal,则它会为你隐式初始化为 null。在 Dart 中没有“未初始化内存”的概念,也无需显式将变量初始化为 null 以确保“安全”。添加 = null 是多余且不必要的。

不好的示例

dart
Item? bestDeal(List<Item> cart) {
  Item? bestItem = null;

  for (final item in cart) {
    if (bestItem == null || item.price < bestItem.price) {
      bestItem = item;
    }
  }

  return bestItem;
}

好的示例

dart
Item? bestDeal(List<Item> cart) {
  Item? bestItem;

  for (final item in cart) {
    if (bestItem == null || item.price < bestItem.price) {
      bestItem = item;
    }
  }

  return bestItem;
}

启用

#

要启用 avoid_init_to_null 规则,请在你的 analysis_options.yaml 文件中的 linter > rules 下添加 avoid_init_to_null

analysis_options.yaml
yaml
linter:
  rules:
    - avoid_init_to_null

如果你使用的是 YAML 映射语法来配置 Linter 规则,请在 linter > rules 下添加 avoid_init_to_null: true

analysis_options.yaml
yaml
linter:
  rules:
    avoid_init_to_null: true