跳至主内容

prefer_const_literals_to_create_immutables

使用 'const' 字面量作为 '@immutable' 类的构造函数参数。

描述

#

当非 const 的列表、Map 或 Set 字面量作为参数传递给标注有 @immutable 的类中声明的构造函数时,分析器会产生此诊断。

示例

#

以下代码会产生此诊断,因为列表字面量 ([1]) 被传递给不可变类中的构造函数,但它不是一个常量列表

dart
import 'package:meta/meta.dart';

@immutable
class C {
  final f;

  const C(this.f);
}

C c = C([1]);

常见修复

#

如果可以将上下文设置为常量上下文,则这样做

dart
import 'package:meta/meta.dart';

@immutable
class C {
  final f;

  const C(this.f);
}

const C c = C([1]);

如果上下文无法设置为常量上下文,但构造函数可以使用 const 调用,则在构造函数调用前添加 const

dart
import 'package:meta/meta.dart';

@immutable
class C {
  final f;

  const C(this.f);
}

C c = const C([1]);

如果上下文无法设置为常量上下文且构造函数无法使用 const 调用,则在集合字面量前添加关键字 const

dart
import 'package:meta/meta.dart';

@immutable
class C {
  final f;

  const C(this.f);
}

C c = C(const [1]);