You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart自定义add函数触发空安全相关报错该如何解决?

Dart空安全参数报错解决方案

报错原因

Dart空安全规则下,可选命名参数的默认隐式值为null:

  • 最初声明的参数类型是不可空的int,没有设置默认值也没有标记强制传参,就会触发「参数不能为null」的报错
  • 把参数改为可空的int?后,没有做空校验就直接执行加法运算,Dart不允许对可能为null的值调用运算符,就触发了第二个报错

修复方案

你可以按需选择以下任意一种方案修改add函数:

  • 方案1:标记参数为必填,强制调用方传参
    适合要求调用时必须传两个参数的场景,你的现有调用逻辑已经传了参数,用这个方案不需要改调用代码:
    int add({required int n1, required int n2}){
      return n1 + n2;
    }
    
  • 方案2:给参数设置非空默认值
    适合允许调用方不传参数的场景,不传参数时会自动用默认值参与计算:
    int add({int n1 = 0, int n2 = 0}){
      return n1 + n2;
    }
    
  • 方案3:可空类型加空校验
    如果你确实需要参数支持null,运算前先做空判断处理即可:
    int add({int? n1, int? n2}){
      // 为空时默认用0参与计算,你也可以根据业务逻辑自定义空处理
      return (n1 ?? 0) + (n2 ?? 0);
    }
    // 如果你能100%确定调用时一定会传非空值,也可以用!强制断言不为空(不推荐,容易出运行时错误)
    int add({int? n1, int? n2}){
      return n1! + n2!;
    }
    

内容的提问来源于stack exchange,提问作者Logic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:45:02