颤振Firebase用户身份验证和配置文件创建

时间:2020-06-26 17:41:02

标签: firebase flutter authentication firebase-authentication backend

我是Flutter / Firebase的新手,我想编写一个应用程序,使用户可以登录/注册,然后他需要使用自己的信息(例如姓名,年龄...)创建个人资料。个人资料,他应该可以继续查看应用的“主要部分”。

我已经通过有效的登录/注册页面实现了Firebase Auth,但现在的问题是,如何最有效地创建Profile东西。

此刻,我自己在这里创建了此方法:

  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身份验证用户UID的用户配置文件是否存在,如果不存在,则将使用执行以上方法的FutureBuilder将用户发送到“ ProfilePage”,如果已经存在,他将看到该应用程序的主要部分。

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

1 个答案:

答案 0 :(得分:1)

是的,这是一个很好的实现。在我的应用程序中,我有与您一样的check User方法。以下方法是一个示例。当用户未注册时,他转发到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('/'));
      });
    }
  }