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

Flutter点击按钮触发Closure call with mismatched arguments匿名函数参数不匹配错误

问题根因

点击手势触发时出现函数参数不匹配错误:你传递给Answer组件的是无参匿名函数() => answerQuestions(answer['score']),但Answer组件的点击回调在调用时尝试传入了一个int类型的参数(错误日志中的数值8),两者参数数量不匹配导致运行时报错,编译阶段因为你声明的函数类型太宽泛没有做校验,所以没有提前发现问题。

解决方法

快速修复报错

如果你不需要用到Answer组件点击回调自带的参数,直接修改传递给Answer的函数,用下划线接收多余的参数即可:

// 修改前
return Answer(() => answerQuestions(answer['score']), answer['text'] as String);
// 修改后
return Answer((_) => answerQuestions(answer['score'] as int), answer['text'] as String);

优化类型定义避免同类问题

你当前声明answerQuestions的时候只用了泛用的Function类型,没有明确参数签名,建议修改为明确的函数类型:

// 修改前
final Function answerQuestions;
// 修改后
final void Function(int score) answerQuestions;

修改后如果后续出现参数传错的情况,编译阶段就会直接抛出错误提示,不需要等到运行时点击才触发崩溃。

如果修改后业务逻辑不符合预期,可以检查Answer组件中点击回调的调用逻辑,确认是否存在多余的参数传递。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 07:45:01