[英]Flutter Firebase get current user data
我正在尝试构建一个个人资料页面,它将捕获用户登录凭据,并在成功登录后,将有一个个人资料页面显示用户信息。
代码
firebase_auth: ^0.14.0+5
cloud_firestore: ^0.11.0+2
provider: ^3.1.0
这是我正在使用的依赖项版本。
void createRecord(name, email, password) async {
await databaseReference.collection("users").add({
'name' : name,
'email': email,
'password': password,
});
}
用户注册成功后会调用createRecord。
void getData() {
databaseReference
.collection("users")
.getDocuments()
.then((QuerySnapshot snapshot) {
snapshot.documents.forEach((f) => print("${f.data}"));
});
}
现在我只能打印所有数据而不是当前登录的用户数据。 (只需要姓名和电子邮件)
下一个问题
如何让数据显示在我的 UI 上?
您做错的是获取所有用户而不是单个用户。
字符串用户名
void createRecord(name, email, password) async {
final result = await databaseReference.collection("users").add({
'name' : name,
'email': email,
'password': password,
});
userid = result;
}
将查询结果分配给一个变量,这将包含所有数据。 您可以使用它而不是再次调用来显示用户数据。 但如果你还想打另一个电话。
Future<User> getData() async {
final user = await databaseReference
.collection("users")
.doc(userid);
return user;
}
虽然不建议为此打两个电话。 但它应该工作。
关于您的第二个问题,由于您使用的是provider
,因此您可以使用Channotifier
和ChangeNotifierProvider
将用户数据插入状态并在 UI 中使用它。
User
模型Profile with ChangeNotifier {
User _user;
User get user => _user;
//call get data here
getProfile()async{
_user = await getdata();
notifylistneres();
}
Provider.of<Profile>(context)
在您的 UI 中使用它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.