Flutter运行报错:不可空类型Key无法赋值null该如何解决?
报错触发原因
这个报错是Flutter空安全机制触发的类型不匹配问题:
你在定义MainPage组件的构造函数时,将key参数标记为了required且类型为不可空的Key,意味着实例化MainPage时必须传入非空的Key值。但你在MaterialApp的home属性中实例化MainPage时,只传了title参数,没有传入key,此时会默认给key赋值null,null不能赋值给不可空的Key类型,因此触发报错。
修复方案
有两种常用修复方式,可根据你的业务需求选择:
- 方案1:调整key参数为可空可选(绝大多数场景推荐)
直接修改MainPage的构造函数定义,去掉key前的required修饰,同时给Key类型添加可空标记?,修改后代码如下:
调整后实例化时不需要强制传key,不传的默认值null符合可空类型要求,不会触发报错。MainPage({Key? key, required this.title}) : super(key: key); - 方案2:实例化时补传key参数
如果你当前的业务场景要求MainPage必须绑定唯一key,直接在实例化时补充传入合法的Key值即可,修改后代码如下:
你可以根据需求选择home: MainPage(key: UniqueKey(), title: 'Flutter Convex BottomBar Sample'),UniqueKey、ValueKey等不同的Key类型。
内容的提问来源于stack exchange,提问作者Gorge
相关产品推荐
相关产品推荐

