Flutter GoRouter.go 在发布模式下无法工作

问题描述 投票:0回答:1

我的 Flutter 项目遇到了一个问题,涉及用于连接到自定义单点登录 (SSO) 服务器的 oauth2_client 包。申请流程结构如下:

  1. 启动画面

  2. 设置屏幕:用户输入服务器 URL。在这里,我通过 API 调用获取 SSO 服务器配置并将其传递给 oauth2_client 包。 OAuth2 客户端登录:用户启动后,oauth2_client 在 Web 视图中启动登录页面,用户在其中输入凭据。登录成功后,应用程序将返回设置页面并回调。此时,我验证用户令牌并使用以下语句导航到主页:

    AppRouter.router.go(AppRouter.home);

此操作正常。 在主页中,用户可以导航到个人资料页面并随后注销。注销后,我调用注销功能并将用户重定向到设置页面:

AppRouter.router.go(AppRouter.settingsPage);

但是,注销后尝试再次登录时就会出现问题。虽然登录过程成功,并且我可以验证用户令牌,但语句:

AppRouter.router.go(AppRouter.home);

无法将应用程序导航到主屏幕。

两个值得注意的观察:

  1. 如果用户在注销后关闭应用程序并重新打开它,登录过程将无缝运行,导航到主页。

  2. 此问题仅发生在Android发布模式下;调试模式运行没有任何问题。

我在路由器中尝试了各种导航方法(go、push、replace、pushReplacement),但没有成功。此外,我尝试在注销后清除所有屏幕,然后再导航到设置屏幕,但这种方法也未能解决问题。

什么可能导致这种行为?任何见解或建议将不胜感激。

flutter flutter-go-router
1个回答
0
投票

就我而言,我更新了:

MaterialApp.router(

   //...

   routerDelegate: router.routerDelegate,
   routeInformationParser: router.routeInformationParser,
   backButtonDispatcher: router.backButtonDispatcher,
)

MaterialApp.router(
        
  //...
    
  routerConfig: router,
)

参考: https://stackoverflow.com/a/77530245/22282531

© www.soinside.com 2019 - 2024. All rights reserved.