在定义构造函数时,是否可以将常量值分配给数据类型List的可选参数。例如,
`class sample{
final int x;
final List<String> y;
sample({this.x = 0; this.y = ["y","y","y","y"]});
}`
Run Code Online (Sandbox Code Playgroud)
上面的代码抛出了一个针对y赋值的错误: Default values of an optional parameter must be constant
此错误的原因是什么?我还可以如何为列表分配默认值?
当前默认值需要为const。将来可能会改变。
如果您的默认值可以是const,那么添加const就足够了
class sample{
final int x;
final List<String> y;
sample({this.x = 0; this.y = const ["y","y","y","y"]});
}
Run Code Online (Sandbox Code Playgroud)
飞镖通常只是假设const时const是必需的,但默认此省略不打破现有代码的情况下,约束实际上是去除值。
如果您想要一个不能为常量的默认值,因为它是在运行时计算的,则可以在初始值设定项列表中进行设置
class sample{
final int x;
final List<String> y;
sample({this.x = 0; List<String> y}) : y = y ?? ["y","y","y","y"];
}
Run Code Online (Sandbox Code Playgroud)