由于其类型,参数 '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
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