如何在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: "动态传递的参数"), ), ], )); }
关键注意事项
- 写完参数类和路由配置后,必须运行代码生成命令更新AutoRoute的生成文件:
flutter pub run build_runner build --delete-conflicting-outputs
- 确保
SettingRoute是AutoRoute自动生成的类,对应SettingPage的@RoutePage()注解。
内容的提问来源于stack exchange,提问作者IcyHerrscher
相关产品推荐
相关产品推荐

