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

Flutter报错:位置参数过多,预期2个实际传入3个需移除多余参数

报错原因

Navigator.push方法的签名只接收2个必填位置参数:第一个是上下文对象context,第二个是路由对象Route。你代码里的括号嵌套完全错乱,误将ZUHUR按钮的ElevatedButton组件作为第三个参数传给了Navigator.push,直接触发参数数量不匹配报错。
具体错误点:

  • SUBUH按钮的onPressed回调中,Navigator.push的闭合括号位置错误,本该在halamansubuh()对应的MaterialPageRoute定义完成后就结束push调用,结果把ZUHUR按钮的整段组件代码写到了push的参数括号内
  • IndexedStack的children数组仅放入了SUBUH一个按钮,ZUHUR按钮被错误嵌套在SUBUH按钮的点击逻辑里,根本不在组件渲染树中
  • 多处括号不匹配,语法解析阶段就把组件实例识别成了方法的传入参数
修正后可运行代码
body: Container(
  height: MediaQuery.of(context).size.height * 0.25,
  margin: EdgeInsets.all(20),
  alignment: Alignment.topCenter,
  child: IndexedStack(
    index: _selectedIndex,
    children: [
      // SUBUH按钮
      ElevatedButton(
        style: ElevatedButton.styleFrom(
          minimumSize: const Size.fromHeight(50),
        ),
        child: Text('SUBUH'),
        onPressed: () {
          Navigator.push(
            context,
            MaterialPageRoute(
              builder: (context) => halamansubuh(),
            ),
          );
        },
      ),
      // ZUHUR按钮,和SUBUH按钮平级放在IndexedStack的children数组中
      ElevatedButton(
        style: ElevatedButton.styleFrom(
          minimumSize: const Size.fromHeight(100),
        ),
        child: Text('ZUHUR'),
        onPressed: () {
          Navigator.push(
            context,
            MaterialPageRoute(
              builder: (context) => halamanzuhur(
                title: 'halamanzuhur',
                desc: 'halamanzuhur',
              ),
            ),
          );
        },
      ),
    ],
  ),
)
修复要点
  • 调整所有括号的闭合位置,每个Navigator.push调用仅传入context和MaterialPageRoute两个参数,完全匹配方法的参数要求
  • 把误写在点击回调里的ZUHUR按钮移到IndexedStack的children数组内,保证两个按钮都能正常显示和响应点击
  • 统一代码缩进格式,梳理组件嵌套层级,避免后续再出现括号错位的低级语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:18:18