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

使用auto_route嵌套导航返回方法时遇NoSuchMethodError问题

auto_route嵌套导航中TabsRouter无identifier属性的错误解决

在使用auto_route包实现嵌套导航时,出现如下错误:

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: NoSuchMethodError: Class 'TabsRouter' has no instance getter 'identifier'. E/flutter ( 5578): Receiver: Instance of 'TabsRouter'

路由配置代码如下:

@AutoRouterConfig(replaceInRouteName: "View,Route")
class AppRouter extends _$AppRouter {
  @override
  List<AutoRoute> get routes => [
        AutoRoute(
          page: HomeRoute.page,
          path: "/home",
          initial: true,
          children: [
            AutoRoute(page: UserRoute.page, path: "user", initial: true),
            AutoRoute(page: SettingsRoute.page, path: "settings"),
          ],
        ),
        AutoRoute(
          page: UserDetailRoute.page,
        ),
      ];
}

错误原因及解决方法

  • 错误本质:TabsRouter是管理标签页/嵌套导航的路由对象,它本身并不提供identifier属性,你是在错误的路由实例上调用了该属性。
  • 解决方式:
    1. 确认调用identifier的对象是子路由对应的Router实例,比如在标签页子页面中,context.router获取的是子路由的Router对象,而非外层的TabsRouter。
    2. 如果需要从TabsRouter中获取当前激活子路由的identifier,可以通过activeRouter访问子路由实例:
      final tabsRouter = context.tabsRouter;
      final activeSubRouter = tabsRouter.activeRouter;
      final identifier = activeSubRouter.identifier;
      
    3. 排查代码中所有调用identifier的位置,确保路由实例类型匹配,避免直接在TabsRouter上调用该属性。

内容的提问来源于stack exchange,提问作者Emirhan Selim Uzun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:03:15