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

Dart报错:参数类型'List<EntryJob> Function(List<Entry>?, List<Job>?)'无法赋值

报错原因

这是Dart空安全规则下的函数类型不匹配错误:
你传入的函数接收的是两个可空类型参数List<Entry>?、List<Job>?,但接收这个函数的位置要求参数为非可空类型List<Entry>、List<Job>,两者的函数签名不一致,触发编译校验报错。

修复方案

根据你的业务场景任选一种即可:

方案1:调整调用方的参数类型定义

如果业务逻辑里确实可能传入null,就把调用位置要求的函数参数改为可空类型,给List<Entry>和List<Job>都加上?后缀即可。

// 修改前的调用方参数定义
List<EntryJob> Function(List<Entry>, List<Job>) targetParam
// 修改后
List<EntryJob> Function(List<Entry>?, List<Job>?) targetParam

方案2:调整自定义函数的参数为非可空

如果你的函数逻辑本身不允许参数为null,就去掉自定义函数参数后的?,和调用方要求的类型对齐。

// 修改前的函数定义
List<EntryJob> combineEntryAndJob(List<Entry>? entries, List<Job>? jobs) {
  // 业务逻辑
}
// 修改后
List<EntryJob> combineEntryAndJob(List<Entry> entries, List<Job> jobs) {
  // 业务逻辑
}

方案3:包装闭包做非空兼容

如果调用方不会传入null,但你需要保留函数的可空参数定义,可以用闭包包装一层做非空断言再传入。

// 传入位置的代码示例
(entries, jobs) => yourFunction(entries!, jobs!)

注意:该方案仅适用于你100%确定运行时参数不会为null的场景,否则会触发运行时空异常。

内容的提问来源于stack exchange,提问作者Muhammad Saqib Aziz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:15:06