如何加载以前登录的用户?
Posted
技术标签:
【中文标题】如何加载以前登录的用户?【英文标题】:How can I load the previous signed in user? 【发布时间】:2021-05-02 00:28:02 【问题描述】:在我的应用程序中,我碰巧有两种类型的用户,医院和患者,它们都配置为使用相同的 firebase 身份验证。我想知道的是,如何根据他们之前的登录方式为各个用户加载页面?例如,如果一家医院已登录但未注销,则当他们运行该应用程序时,它应该显示医院的仪表板而不是患者的仪表板。我该如何配置?
【问题讨论】:
【参考方案1】:shared_prefs
支持 Flutter web。保存一个说明帐户类型的值。
看到这个答案: https://***.com/a/59579821/13714686
SharedPreferences prefs = await SharedPreferences.getInstance();
bool isHospital = (prefs.getBool('isHospitalAccount');
if(isHospital == true)
//hospital navigation
else
//patient navigation
【讨论】:
【参考方案2】:首先,您需要检查用户是否已登录。为此,您可以通过以下代码进行检查。
class MyApp extends StatelessWidget
@override
Widget build(BuildContext context)
return FutureBuilder<FirebaseUser>(
future: FirebaseAuth.instance.currentUser(),
builder: (BuildContext context, AsyncSnapshot<FirebaseUser> snapshot)
if (snapshot.hasData)
FirebaseUser user = snapshot.data; // this is your user
/// is because there is a user already logged, So route them to a Screen of Dashboard directly.
return MainScreen();
/// other way there is no user logged.
return LoginScreen();
);
现在,您需要在 FireStore 中维护一个用户列表,其中将存储用户的元数据,例如上次登录、用户类型信息。使用此信息,您可以相应地路由用户。
【讨论】:
以上是关于如何加载以前登录的用户?的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC:如何在每个 Thymeleaf 页面上重新加载数据库中的登录用户信息?
我如何在登录 asp.net core razor 之前显示加载图标或禁用按钮
绿色加载屏幕后登录 Google Play 消失。如何解决?