【发布时间】:2021-10-04 14:23:31
【问题描述】:
我一直在尝试在登录时将用户配置文件检索到每个用户的帐户。每个用户的信息都存储在带有各自 uid 的文档中。
当用户注册并登录时,与该用户关联的数据正确显示。但是,当我创建第二个帐户并登录时,与第二个用户关联的数据会显示给用户 2 和用户 1。
如何处理 Streambuilder 中的值,以便每个登录用户都可以唯一地查看他们的个人资料?
下面是我的代码和我的数据库截图
FirebaseAuth _auth = FirebaseAuth.instance;
final uid = _auth.currentUser!.uid;
final Stream<DocumentSnapshot<Map<String, dynamic>>> db = FirebaseFirestore
.instance
.collection('users')
.doc(uid)
.collection('Profile')
.doc('Personal details')
.snapshots();
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('First name'),
SizedBox(width: 40),
StreamBuilder<DocumentSnapshot>(
stream: db,
builder: (BuildContext context,
AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError)
return Text('Something went wrong');
if (snapshot.connectionState ==
ConnectionState.waiting)
return CircularProgressIndicator();
dynamic data = snapshot.data!.data();
return Text(data['First name']);
// return Text('First name', style: boldFont);
},
),
]),
Divider(color: Colors.black),
SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('Last name'),
SizedBox(width: 40),
StreamBuilder<DocumentSnapshot>(
stream: db,
builder: (BuildContext context,
AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError)
return Text('Something went wrong');
if (snapshot.connectionState ==
ConnectionState.waiting)
return CircularProgressIndicator();
dynamic data = snapshot.data!.data();
return Text(data['Last name'], style: boldFont);
// return Text('Last name', style: boldFont);
},
),
],
),
我的退出代码
onPressed: () async {
try {
await FirebaseAuth.instance.signOut();
errorMessage = '';
} on FirebaseAuthException catch (error) {
errorMessage = error.message!;
}
Navigator.of(context).pushReplacementNamed('/signIn');
setState(() {});
}
【问题讨论】:
-
您能提供您当前的退出代码吗?
-
嗨,维克多,我已经添加了退出代码
标签: firebase flutter google-cloud-firestore