Dart空安全报错:int?无法赋值给num类型参数,如何修复?
适配Dart空安全:解决
int?无法赋值给num的问题 这个报错的核心原因是:Dart空安全启用后,int?是可空整数类型,而num是非空数值类型,可空类型不能直接赋值给非空类型——这是空安全机制强制的类型检查,用来避免潜在的空指针异常。
以下是几种实用的修复方案,你可以根据业务场景选择:
先做空检查再赋值
先判断可空变量是否为null,在确认非空的代码块里使用变量,Dart会自动推断它的非空类型:int? nullableInt = 5; num targetNum; if (nullableInt != null) { targetNum = nullableInt; // 此时nullableInt被推断为非空int,可直接赋值给num } else { // 根据业务需求处理null情况,比如给默认值 targetNum = 0; }用空断言运算符
!(谨慎使用)
如果你能100%确定这个可空变量不会为null,可以用!强制转为非空类型。注意:如果变量实际为null,运行时会抛出异常:int? nullableInt = 10; num targetNum = nullableInt!; // 断言变量非空,直接赋值用空合并运算符
??设置默认值
一行代码搞定null处理,当变量为null时自动使用指定的默认值:int? nullableInt; num targetNum = nullableInt ?? 0; // nullableInt为null时,用0赋值从根源优化:声明非空变量
如果这个变量从业务逻辑上就不应该为null,直接把类型声明为非空的int,彻底避免可空类型问题:int nonNullInt = 15; // 直接声明为非空int num targetNum = nonNullInt; // 无类型冲突,直接赋值
内容的提问来源于stack exchange,提问作者Guru PJOK-mu
相关产品推荐
相关产品推荐

