我创建了一个流生成器,该流生成器订阅了“ requests”用户集合内的子集合。我能够实时显示这些请求。但是,我需要在请求中显示的某些信息位于请求的子集合之外。例如,提出请求的人,我需要能够转到其用户文档并访问其photourl或显示名称等。
我不确定在哪里可以执行此操作,因为我最初以initstate的形式检索了当前用户ID,如下所示:
uid==null
?CircularProgressIndicator()
: StreamBuilder<QuerySnapshot> (
stream: _firestore.collection('users').document('$uid').collection('requests').snapshots(),
builder: (context,snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(
backgroundColor: Colors.lightBlueAccent,
),
);
}
final docs =snapshot.data.documents;
List<RequestCard> requestCards=[];
for(var doc in docs){
requesterName = doc.data['requester'].toString();
User requester = new User(uid:requesterName);
requester.getInfo().then((_)=>setState((){
requesterImage = requester.getPhotoUrl();
}
));
print(requesterImage);
requestReason = doc.data['event'].toString();
print(requestReason);
requestValue = doc.data['amount'].toString();
print(requestValue);
requestType = 1;
settleType = 1;
membersNumber = 2;
date = '10m ago';
然后,我可以使用其uid来构建流以订阅当前用户的请求集中的更改。但是,当我确实满足他们的请求时,我现在可以访问请求者是谁或其他成员的uid。
https://graph.microsoft.com/v1.0/users/{userid}/drive/root/children
我的问题是,在哪里可以读取此数据,以便可以使用其uid来查询其名称或photourl等内容。我已经尝试通过使用.then()=> setState进入构建器内部,正如您在请求者图像中看到的那样,但是由于检索数据是异步的,因此我猜想它返回的空值是我试图获取的值,然后才能实际获取它们。因此,在哪里或如何在不返回null的情况下访问此streambuilder中的另一个集合?我应该新建一个流还是应该从请求集合中读取getinfo方法并获取所有成员信息?