由于其类型,参数 'colour' 不能具有 'null' 的值,但隐式默认值为 'null'

The parameter 'colour' can't have a value of 'null' because of its type, but the implicit default value is 'null'

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),
      ),
    );
  }
}

此代码应该可以解决您的问题:

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

因为 Color 还没有赋值,所以它可以为空。 Dart 具有 nullsafety,因此问号表示该值可以为 null。 有关详细信息,请参阅此 link:https://sanjibsinha.com/null-safety-in-flutter-dart/

编辑:您也可以这样做:

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

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

问题是由于空安全性而显示警告消息。

On class level Color 需要在读取时间之前进行初始化。在您的情况下,您使用的是 named Constructor,它默认用作可选参数。你可以在构造函数上做到 required

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

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

了解更多 null-safety