我正在尝试使用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;
}
由于我刚开始,请告诉我是否有更好的方法。干杯。
答案 0 :(得分:1)
由于没有等待currentUser方法稳定,所以您将获得null。像这样更改_getUserEmail方法:
String _userEmail;
_getUserAuthEmail() async {
FirebaseUser user = await FirebaseAuth.instance.currentUser();
setState(() {
_userEmail = user.email;
});
return this._userEmail;
}
另外,关于这个 “我选择使用用户的电子邮件和唯一标识符(我不确定使用自动生成的用户ID是否更好)。”
我建议您使用用户的uid来保存与用户相关的内容。