【问题标题】:Flutter | Firebase User Authentication & Profile creation颤振 | Firebase 用户身份验证和配置文件创建
【发布时间】:2020-10-17 08:58:37
【问题描述】:

我是 Flutter/Firebase 的新手,我想编写一个用户可以登录/注册的应用程序,然后他需要使用他的姓名、年龄等信息创建个人资料......并且只有在他创建了自己的profile,他应该能够继续并查看应用程序的“主要部分”。

我已经使用有效的登录/注册页面实现了 Firebase 身份验证,但我现在的问题是,如何最有效地创建个人资料。

目前我在这里自己创建了这个方法:

  Future checkUserProfile() async{

// get snapshot from document
final snapShot = await Firestore.instance.collection('profiles').document(uid).get();

if(snapShot == null || !snapShot.exists){

  User.gotProfile = false;

} else {

  User.gotProfile = true;

}

此方法正在检查具有 Firebase Auth 用户 UID 的用户配置文件是否已经存在,如果不存在,用户将被发送到“ProfilePage”,FutureBuilder 执行上述方法,如果它已经存在,他将看到应用程序的主要部分。

正如我已经说过的,我自己尝试过,我想问一下这是否已经是一个很好的实现,或者是否有更简单更好的方法来做到这一点?

【问题讨论】:

    标签: firebase flutter authentication firebase-authentication backend


    【解决方案1】:

    是的,这是一个很好的实现。在我的应用程序中,我有像您一样的检查用户方法。以下方法是一个示例。当用户未注册时,他转发到 RegisterPage 否则他转发到 MainPage。

    checkUserAlreadyExists(FirebaseUser user) async {
        final userData = await Firestore.instance.collection('users').document(user.uid).get();
        if (userData == null || !userData.exists) {
          setState(() {
            Navigator.pushAndRemoveUntil(context,
                MaterialPageRoute(builder: (BuildContext context) => RegisterPage()), ModalRoute.withName('/'));
          });
        } else {
          setState(() {
            Navigator.pushAndRemoveUntil(context,
                MaterialPageRoute(builder: (BuildContext context) => MainPage()), ModalRoute.withName('/'));
          });
        }
      }
    

    【讨论】:

    • 啊,好吧,你已经在函数中做了。我为它创建了一个额外的小部件,但它仍然应该是相同的。非常感谢您的分享!
    • 是的,完全没问题,欢迎您:) 请您接受答案,或者我可以帮助您解决其他问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 2021-03-22
    • 2020-04-19
    • 2019-11-07
    • 2019-12-22
    • 1970-01-01
    相关资源
    最近更新 更多