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]);