[英]Dart set default value for parameter
在Flutter
框架中,我试图将参数的默认值设置为borderRadius
,在这个示例中我如何实现它? 当我尝试设置时,我得到Default values of an optional parameter must be constant
错误,例如:
class SimpleRoundButton extends StatelessWidget {
final BorderRadius borderRadius;
SimpleRoundButton({
}):this.borderRadius = BorderRadius.circular(30.0);
}
class SimpleRoundButton extends StatelessWidget {
final BorderRadius borderRadius= BorderRadius.circular(30.0);
SimpleRoundButton({
this.borderRadius,
});
}
class SimpleRoundButton extends StatelessWidget {
final BorderRadius borderRadius;
SimpleRoundButton({
this.borderRadius= BorderRadius.circular(30.0)
});
}
所有这些样本都是不正确的
BorderRadius.circular()
不是 const 函数,因此您不能将其用作默认值。
为了能够设置常量圆形边框,您可以使用BorderRadius.all
函数,其常量如下所示:
class SimpleRoundButton extends StatelessWidget {
final BorderRadius borderRadius;
SimpleRoundButton({
this.borderRadius: const BorderRadius.all(Radius.circular(30.0))
});
@override
Widget build(BuildContext context) {
return null;
}
}
Gunhan 的回答解释了如何设置默认BorderRadius
。
通常,如果没有可用的const
构造函数,您可以改为使用null
默认值(或其他一些适当的标记值),然后稍后设置所需的值:
class Foo {
Bar bar;
Foo({Bar? bar}) : bar = bar ?? Bar();
}
请注意,与直接设置默认值相比,使用此方法显式传递null
作为参数会有所不同。 也就是说,使用这种方法的Foo(bar: null)
会将成员变量bar
初始化为Bar()
,而对于正常的默认值,它将被初始化为null
并要求该成员可以为空。 (但是,在某些情况下,这种方法的行为可能更受欢迎。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.