调用ColoredCircle类时遇错误:Null无法赋值给Key类型参数
解决Flutter中ColoredCircle类的Key参数空值错误
你遇到的错误是Dart非空安全机制导致的:ColoredCircle构造函数里的Key key被标记为required,属于非空类型,但你实例化时传入了key: null,Null无法赋值给非空的Key类型。
解决方案一:允许Key参数为空
修改类的构造函数,将Key key改为可空类型Key? key,并移除required限制:
class ColoredCircle extends StatelessWidget { // 让key变为可空类型,默认值设为null ColoredCircle({Key? key, required this.color}) : super(key: key); final Color color; final double width = 50; @override Widget build(BuildContext context) { return Container( width: width, height: width, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), color: color, // 修正原代码问题:将写死的Colors.red改为类的color属性 ) ); } }
修改后可以这样使用:
// 不传key(推荐写法) ColoredCircle(color: Colors.red), // 或者传null ColoredCircle(color: Colors.red, key: null),
解决方案二:传入有效的Key实例
如果业务逻辑确实需要使用Key,传入一个非空的Key对象即可,比如UniqueKey()或GlobalKey():
ColoredCircle(color: Colors.red, key: UniqueKey()),
另外注意原代码的一处疏漏:build方法里Container的颜色被写死为Colors.red,导致你传入的color参数完全没有生效,上面的代码已经同步修正了这个问题。
内容的提问来源于stack exchange,提问作者Gram
相关产品推荐
相关产品推荐

