Flutter-如何将Firebase-Auth用户凭证添加到新记录(FireStore文档)?

时间:2018-10-02 17:23:29

标签: firebase dart firebase-authentication flutter google-cloud-firestore

我正在尝试使用Flutter和Firebase创建一个简单的Crud应用,该应用的记录(在FireStore中创建的文档)与已通过身份验证的用户相关。因此,Crud功能将仅由创建记录的用户执行。 IE用户只能编辑/更新/删除他们最初添加的记录。

我的firebase_auth和crud函数与firestore配合得很好。我遇到的问题是有关两者。我选择使用用户的电子邮件和唯一标识符(我不确定使用自动生成的用户ID是否更好)。我创建了一个单独的函数,用于在将当前用户的电子邮件添加到Firestore文档中时简单地返回该电子邮件。问题是我第一次添加记录时,用户电子邮件返回 null 。如果我再次提交表单,它将开始正常工作。

'

从onPressed事件中调用哪个

String _userEmail;
_getUserAuthEmail() {
  FirebaseAuth.instance.currentUser().then((user){
    setState((){this._userEmail = user.email;}); 
  });
  return this._userEmail;
}

由于我刚开始,请告诉我是否有更好的方法。干杯。

1 个答案:

答案 0 :(得分:1)

由于没有等待currentUser方法稳定,所以您将获得null。像这样更改_getUserEmail方法:

String _userEmail;
_getUserAuthEmail() async {
  FirebaseUser user = await FirebaseAuth.instance.currentUser();
  setState(() {
      _userEmail = user.email;
    });
  return this._userEmail;
}

另外,关于这个 “我选择使用用户的电子邮件和唯一标识符(我不确定使用自动生成的用户ID是否更好)。”

我建议您使用用户的uid来保存与用户相关的内容。