如何从Flustore中的Stream构建器中的另一个集合中的Firestore中读取

时间:2019-06-25 21:16:44

标签: asynchronous flutter dart google-cloud-firestore

我创建了一个流生成器,该流生成器订阅了“ 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方法并获取所有成员信息?

0 个答案:

没有答案