我想像这样在我的Firestore中添加数据
->用户(集合)->用户ID(文档)->朋友(集合)
我想从朋友收藏中添加/获取数据
这是我的代码:
Future<void> _getUserDoc() async {
final FirebaseAuth _auth = FirebaseAuth.instance;
final Firestore _firestore = Firestore.instance;
FirebaseUser user = await _auth.currentUser();
DocumentReference ref = _firestore.collection('users').document(user.uid);
}
Widget _buildBody(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: Firestore.instance
.collection('users')
.document()
.collection('friends')
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData)
return Center(
child: CircularProgressIndicator(
backgroundColor: Colors.deepPurple,
));
return _buildList(context, snapshot.data.documents);
},
);
}
在_buildbody小部件中,我如何使用user.uid来获取好友集合中的数据。
预先感谢
答案 0 :(得分:0)
如果您的窗口小部件是有状态窗口小部件,那么您可以在窗口小部件状态下获取用户文档引用,并使用相同的ref来获取朋友收集数据,例如:
DocumentReference userRef;
@override
initState(){
super.initState();
_getUserDoc();
}
//Call this method from initState()
Future<void> _getUserDoc() async {
final FirebaseAuth _auth = FirebaseAuth.instance;
final Firestore _firestore = Firestore.instance;
FirebaseUser user = await _auth.currentUser();
setState((){
userRef = _firestore.collection('users').document(user.uid);
});
}
Widget _buildBody(BuildContext context) {
if(userRef == null) {
CircularProgressIndicator(
backgroundColor: Colors.deepPurple,
));
}
return StreamBuilder<QuerySnapshot>(
stream: userRef
.collection('friends')
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData)
return Center(
child: CircularProgressIndicator(
backgroundColor: Colors.deepPurple,
));
return _buildList(context, snapshot.data.documents);
},
);
}
P.S。 :只需确保在调用StreamBuilder函数“ _buildBody”之前,userRef不为空