在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)
});
}
所有这些样本都不正确
答案 0 :(得分:3)
BorderRadius.circular()
不是const函数,因此您不能将其用作默认值。
要设置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;
}
}
答案 1 :(得分:1)
Gunhan's answer介绍了如何设置默认值BorderRadius
。
通常,如果没有可用的const
构造函数,则可以求助于使用null
的默认值(或其他一些合适的前哨值),然后在以后设置所需的值:
class Foo {
Bar bar;
Foo({Bar bar}) : bar = bar ?? Bar();
}
(请注意,与直接设置默认值相比,使用此方法显式传递null
作为参数会有所不同。也就是说,使用此方法的Foo(bar: null)
将初始化{{1} }设为bar
,而使用正常的默认值会将Bar()
初始化为bar
。但是,在某些情况下,这种方法的行为可能更可取。)