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

如何在AutoRoute的嵌套路由中传递参数?

解决AutoRoute嵌套初始页面传递必填参数的问题

首先要纠正一个错误:不要把BuildContext作为Widget的构造参数,Widget的build方法会自动传入BuildContext,你的SettingPage写法不合理,先改成正常的必填参数示例(比如requiredParam):

@RoutePage()
class SettingPage extends StatelessWidget {
  final String requiredParam;

  const SettingPage({super.key, required this.requiredParam});

  @override
  Widget build(BuildContext context) {
    return Scaffold(body: Text(requiredParam));
  }
}

接下来分两种场景处理参数传递:

场景1:初始化时给SettingPage传固定参数

直接在路由配置里给SettingRoute添加initialArgs:

List<AutoRoute> get routes => [
    AutoRoute(
      path: "/",
      initial: true,
      page: BaseRoute.page,
      children: [
        // ... home_tab 配置
        AutoRoute(
          path: "setting_tab",
          page: SettingTabRoute.page,
          children: [
            AutoRoute(
              path: "base_setting",
              page: SettingRoute.page,
              initial: true,
              // 传入初始固定参数
              initialArgs: const SettingPageArgs(requiredParam: "初始化默认参数"),
            ),
          ],
        )
      ],
    ),
  ];

场景2:切换到SettingTab时动态传参

当从导航栏切换到SettingTab时,通过AutoRoute生成的路由类传递子路由参数:

// 示例:在BasePage的导航栏点击事件中
onTap: () {
  context.pushRoute(SettingTabRoute(
    children: [
      BaseSettingRoute(
        args: SettingPageArgs(requiredParam: "动态传递的参数"),
      ),
    ],
  ));
}

关键注意事项

  1. 写完参数类和路由配置后,必须运行代码生成命令更新AutoRoute的生成文件:
flutter pub run build_runner build --delete-conflicting-outputs
  1. 确保SettingRoute是AutoRoute自动生成的类,对应SettingPage的@RoutePage()注解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:13:29