【问题标题】:The parameter 'colour' can't have a value of 'null' because of its type, but the implicit default value is 'null'参数 'colour' 的值不能为 'null',因为它的类型,但隐含的默认值是 'null'
【发布时间】:2022-01-20 23:57:44
【问题描述】:

enter image description here

代码在这里 构造函数的 this.colour 变量不起作用

class ReusableCard extends StatelessWidget {
  Color colour= null;
  ReusableCard({@required this.colour});
  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.all(15),
      decoration: BoxDecoration(
        color: colour,
        borderRadius: BorderRadius.circular(10.0),
      ),
    );
  }
}

【问题讨论】:

  • 请将您的代码添加为文本而不是图像。这让其他人更容易找到您的问题。

标签: flutter dart flutter-layout


【解决方案1】:

这段代码应该可以解决你的问题:

ReusableCard({this.colour}); 
Color? colour;

因为尚未分配颜色,但它可以为空。 Dart 具有 nullsafety,因此问号表示该值可以为 null。 有关详细信息,请参阅此链接:https://sanjibsinha.com/null-safety-in-flutter-dart/

编辑:你也可以这样做:

ReusableCard({this.colour}); 
late Color colour;

late 关键字在第一次读取时初始化变量,而不是在创建时初始化

【讨论】:

    【解决方案2】:

    由于 null 安全性,问题显示警告消息。

    类级别Color 需要在读取时间之前进行初始化。在您的情况下,您使用的是 named Constructor,它默认充当可选参数。您可以在构造函数上将其设为required

      final Color colour;
      const ReuseableCard({
        Key? key,
        required this.colour,
      }) : super(key: key);
    

    或者让它可以为空,就像@EnviroApps 提到的那样。但是对于这种情况,我更喜欢上面的答案。

    了解更多关于null-safety

    【讨论】:

      猜你喜欢
      • 2022-06-14
      • 2021-06-24
      • 2021-10-28
      • 2021-11-12
      • 2022-01-03
      • 1970-01-01
      • 2021-09-05
      • 2022-08-13
      • 2021-10-26
      相关资源
      最近更新 更多