HydratedCubit 用于检查用户登录状态

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

我对移动开发还很陌生。我一直在与 Cubit 和 HydratedCubit 合作,在我的应用程序中进行一些状态管理。根据我一直在做的一些阅读,HydratedCubit 可用于存储共享设置,以便它们在下一个会话中恢复。我一直在试图弄清楚如何清楚地了解应用程序的入职状态,但我有点困惑。申请流程应如下:

如果用户从未完成入职:

SplachPage() -> 入门() -> 登录()

如果用户已加入。

SplashPage() -> 登录()

SplashPage 应始终显示徽标 2 秒。

我正在尝试弄清楚 HydratedCutib 的 BlocProvider 和 BlocBuilder 应该放在哪里。如果状态显示用户过去已经登录过,我可以将其放在“登录”页面中并立即导航到“登录”。这样做的问题是,它总是会让我的应用程序在加载时进入入门页面,这感觉有点不必要。另一方面,如果用户已经 Onboarded,我可以将提供程序和构建器放在 Splash 页面中,而不导航到 Onboarding,但我不希望用户在状态更改时再次在 SplashPage 中等待 2 秒,并且我'我不确定如果我们是第一次加载 SplashPage 或重建它,我将如何进行区分,因此这可能会导致用户在登录后必须在 SplashPage 中再等待 2 秒。

有什么我不明白的地方,或者 HydratedCubit 不太适合这个用例?

谢谢

ios flutter mobile bloc cubit
1个回答
0
投票

首先,在继续我的回答之前必须澄清一件事。您是否希望您的应用程序“记住”用户过去已经完成了入门过程,即使用户卸载/安装了该应用程序?

如果是,水合不是这里的解决方案,因为一旦用户卸载应用程序,水合数据也会被删除。

假设上述不是问题,我要做的是为登录页面制作一个包装器小部件。我们将此称为 OnBoardingWrapper,它将接受 Widget 参数 child。在我们的例子中,子项是 LoginPage。

如果过去已经完成了 onBoarding,则此包装器将在构建器中具有简单的逻辑,然后渲染 LoginPage 小部件,否则渲染 OnBoarding 小部件。

在此 Wrapper 小部件上,可以提供一个水合立方体,它仅具有一个状态值(如 isOnBoardingCompleted)和一个将该值从 false 设置为 true 的方法。

因此,如果呈现了 onBoarding,则在完成时调用该方法,将值设置为 true 并显示登录页面。

如果用户在完成引导流程后重新访问应用程序,则将检索 isOnBoardingCompleted == true 的水合状态,并且用户将跳过引导。

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