跳到主要内容

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