Flutter GetX 路由会重定向到 initialRoute

Posted

技术标签:

【中文标题】Flutter GetX 路由会重定向到 initialRoute【英文标题】:Flutter GetX routing will redirected to initialRoute 【发布时间】:2022-01-10 22:45:48 【问题描述】:

我目前正在调查以下问题:当我第一次尝试使用“xyz.com/invite/dd/dd”之类的链接参数打开页面时,我将立即定向到初始路由“/”。当我再次在同一个选项卡中执行此操作时,它将起作用并将我重定向到给定页面“/invite/dd/dd”。

这里是第一次尝试的控制台日志:

The following message was thrown:
Could not navigate to initial route.
The requested route name was: "/invite/dd/dd"
There was no corresponding route in the app, and therefore the initial route specified will be ignored and "/" will be used instead.

控制台在同一选项卡中记录第二次尝试:

[GETX] GOING TO ROUTE /dashboard
[GETX] GOING TO ROUTE /invite/dd/dd
[GETX] GOING TO ROUTE /invite/dd/dd
[log] INVITE PAGE!

当页面加载一次时,在第二次尝试时一切正常!

main.dart 中 GetMaterialAPP 的源代码:

return GetMaterialApp(
            // initialBinding: AuthBinding(),
              initialRoute: RootRoute,
              opaqueRoute: true,
              unknownRoute: GetPage(name: "/not-found", page: () => PageNotFound(), transition: Transition.noTransition),
              defaultTransition: Transition.native,
              // transitionDuration: Duration.zero,
              getPages: [
                GetPage(name: RootRoute, page: () => Root()),
                GetPage(name: AuthenticationPageRoute, page: () => AuthenticationPage()),
                GetPage(name: RegistrationPageRoute, page: () => RegistrationPage()),
                GetPage(name: ForgotPasswordPageRoute, page: () => ForgotPasswordPage()),
                GetPage(name: InvitePageRoute + "/:inviteId/:userId", page: () => InvitePage()),
                // GetPage(name: TrackPageRoute + "/:orderId", page: () => TrackPage())
              ],
              debugShowCheckedModeBanner: false,
              title: 'xyz.com',
              theme: ThemeData(
                hoverColor: Colors.transparent,
                  splashColor: Colors.transparent,
                  // highlightColor: Colors.transparent,
                  primarySwatch: Colors.blue,
                  scaffoldBackgroundColor: light,
                  // scaffoldBackgroundColor: Colors.white,
                  textTheme: GoogleFonts.mulishTextTheme(
                      Theme.of(context).textTheme).apply(
                      bodyColor: Colors.black
                  ),
                  pageTransitionsTheme: PageTransitionsTheme(builders: 
                    TargetPlatform.ios: FadeUpwardsPageTransitionsBuilder(),
                    TargetPlatform.android: FadeUpwardsPageTransitionsBuilder()
                  )
              )
          );

提前致谢。随便问什么。

【问题讨论】:

【参考方案1】:

您的代码绝对没问题,并且可以正常工作。我试过但无法重现它。

但是,您需要访问 xyz.com/#/invite/dd/dd 而不是 xyz.com/invite/dd/dd。 访问xyz.com/invite/dd/dd 将重定向到初始路由。

要从 URL 中删除 #,请参考 this

【讨论】:

谢谢!问题是我在返回语句前面有一个 Futurebuiler。如果没有 Futurebuilder 在前面,它将完美运行。

以上是关于Flutter GetX 路由会重定向到 initialRoute的主要内容,如果未能解决你的问题,请参考以下文章

Flutter App每次登录后都会重定向到登录页面

React 路由器会短暂显示登录屏幕,然后如果用户已登录,则会重定向到仪表板

jHipster - 即使从实体中删除权限,AngularJS 路由也会重定向到登录

Flutter状态管理终极方案GetX第一篇——路由

网页中的 Flutter GetX 路由

如何使用 GetX 包管理 Flutter Web URL 路由?