Flutter:构造函数中List参数的默认分配

Nav*_*een 2 dart flutter

在定义构造函数时,是否可以将常量值分配给数据类型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

此错误的原因是什么?我还可以如何为列表分配默认值?

Gün*_*uer 8

当前默认值需要为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)

飞镖通常只是假设constconst是必需的,但默认此省略不打破现有代码的情况下,约束实际上是去除值。

如果您想要一个不能为常量的默认值,因为它是在运行时计算的,则可以在初始值设定项列表中进行设置

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)