在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)
});
}
Run Code Online (Sandbox Code Playgroud)
所有这些样本都是不正确的
Gun*_*han 10
BorderRadius.circular() 不是 const 函数,因此您不能将其用作默认值。
为了能够设置 const 圆形边框,您可以使用BorderRadius.all如下所示的 const 函数:
class SimpleRoundButton extends StatelessWidget {
final BorderRadius borderRadius;
SimpleRoundButton({
this.borderRadius: const BorderRadius.all(Radius.circular(30.0))
});
@override
Widget build(BuildContext context) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
jam*_*lin 10
Gunhan 的回答解释了如何设置默认BorderRadius.
通常,如果没有const可用的构造函数,您可以改用null默认值(或其他一些适当的标记值),然后稍后设置所需的值:
class Foo {
Bar bar;
Foo({Bar? bar}) : bar = bar ?? Bar();
}
Run Code Online (Sandbox Code Playgroud)
请注意,null与直接设置默认值相比,使用此方法显式传递作为参数会有所不同。也就是说,Foo(bar: null)使用这种方法会将成员变量初始化bar为Bar(),而使用正常的默认值,它将被初始化为null并要求该成员可以为空。(但是,在某些情况下,这种方法的行为可能更受欢迎。)
| 归档时间: |
|
| 查看次数: |
10537 次 |
| 最近记录: |