Flutter报错:预期2个位置参数,实际传入1个的解决方法咨询
解决Flutter中
OnRewardListener参数不匹配的报错 报错信息:2 Positional arguments expected, but 1 found,触发位置在_platformCallHandler方法的_onRewardListener!(call.arguments);行。原因是OnRewardListener定义要求接收两个位置参数(num quantity和String? uid),但当前仅传入了一个参数call.arguments。
解决方法
原生端通过MethodChannel传递的call.arguments是包含奖励数据的Map结构,我们需要从这个Map中解构出对应字段,再分别传入监听函数:
修改_platformCallHandler中"onReward"分支的代码:
case "onReward": // 解析原生传递的参数Map final args = call.arguments as Map<String, dynamic>; final quantity = args['quantity'] as num; final uid = args['uid'] as String?; // 传入两个参数到监听函数 _onRewardListener!(quantity, uid); break;
注意事项
- 需确保原生端传递的
arguments确实包含quantity和uid两个键,键名要和Flutter端取值的键名完全一致; - 如果原生端传递的参数类型有差异,需同步调整类型转换代码(比如
quantity是int类型时,改用as int)。
内容的提问来源于stack exchange,提问作者Juan Real
相关产品推荐
相关产品推荐

