我正在尝试为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/

10-10 16:04