You need to enable JavaScript to run this app. Flutter回调函数报位置参数过多错误,如何回传筛选参数到上级页面
优惠活动
大模型
产品
解决方案
定价
更多

Flutter回调函数报位置参数过多错误,如何回传筛选参数到上级页面

问题原因

你在FilterScreen中声明的saveFilters参数类型为VoidCallback,该类型是Dart内置的无参函数类型,不支持传入参数,你在保存按钮点击时给widget.saveFilters传入了选中的筛选参数,类型不匹配所以触发报错。

修复方法

调整saveFilters的参数类型,修改FilterScreen类的代码如下:

class FilterScreen extends StatefulWidget {
  static const routeName = '/filters';
  // 将VoidCallback替换为可接收筛选map参数的函数类型
  final Function(Map<String, bool>) saveFilters;

  FilterScreen(this.saveFilters);

  @override
  _FilterScreenState createState() => _FilterScreenState();
}

如果需要更规范的写法,也可以提前用typedef定义函数类型,方便后续复用:

// 定义在FilterScreen类外部
typedef SaveFiltersFunc = void Function(Map<String, bool> filters);

class FilterScreen extends StatefulWidget {
  static const routeName = '/filters';
  final SaveFiltersFunc saveFilters;

  FilterScreen(this.saveFilters);

  @override
  _FilterScreenState createState() => _FilterScreenState();
}

修改完成后即可正常传参调用,不会再触发该报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 20:45:01