我正在尝试为FlutButton
小部件创建一个自定义类,当我尝试使用方括号指定color属性时,出现此错误:
The default value of an optional parameter must be constant.
class CustomFlatButton extends StatelessWidget {
final String text;
final Color color;
final Color textColor;
CustomFlatButton({
this.text='Default sign in text',
this.color = Colors.white70,
this.textColor = Colors.grey[900] // this is what is causing the error [900]
});
有没有一种方法可以解决此问题,而无需将我的小部件转换为有状态的小部件?预先谢谢你。
最佳答案
您可以使用初始化程序列表来使用非恒定值初始化最终实例字段:
class CustomFlatButton extends StatelessWidget {
CustomFlatButton({
this.text='Default sign in text',
this.color = Colors.white70,
Color textColor,
}) : textColor = textColor ?? Colors.grey[900];
final String text;
final Color color;
final Color textColor;
}
在这种情况下,textColor = textColor ?? Colors.grey[900]
分配的左侧对应于this.textColor
,而右侧textColor
则指向构造函数参数。如果没有值传递给构造函数,则使用??
运算符使用默认值。您可以learn more about the initializer list here。
您可以learn more about the
??
operator here。关于flutter - 如何将非恒定值用于可选参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63002683/