Flutter 为什么在Flatter wih Firestore中使用foreach方法后会得到null?

Flutter 为什么在Flatter wih Firestore中使用foreach方法后会得到null?,flutter,dart,google-cloud-firestore,async-await,stream,Flutter,Dart,Google Cloud Firestore,Async Await,Stream,我试图同时获取一个用户文档及其子集合。但是我发现在一个查询中是不可能的。因此,我决定从另一个角度来处理这个问题 我们有什么? 我有一个getRelative()getter,它返回Stream 流获取相对异步*{ 病人名单; patientList=等待获取PatientCollection .forEach((元素)=>element.patients) 。然后((值)=>值); 收益率*usersCollection .document(_userEmail) .快照() .map((快照

我试图同时获取一个用户文档及其子集合。但是我发现在一个查询中是不可能的。因此,我决定从另一个角度来处理这个问题


我们有什么? 我有一个
getRelative()
getter,它返回
Stream

流获取相对异步*{
病人名单;
patientList=等待获取PatientCollection
.forEach((元素)=>element.patients)
。然后((值)=>值);
收益率*usersCollection
.document(_userEmail)
.快照()
.map((快照)=>_relativeDataFromSnapshot(快照,patientList));
}
getPatientCollection()
是另一个getter方法,它返回
Stream
。我不打算透露getter的细节。因为它很好用


有什么问题? 问题是当我得到
时,我得到的是
。因此,为了将其转换为
Future
,我使用了
forEach
方法。而且它也很好用。我可以看到
元素。患者
不是空的。我可以看到它的内部及其返回类型
List

但是当我调试它时,在
forEach()
完成它的工作之后,我意识到它返回null。和
patientList
变为空。这会引起一个问题


我在问什么?
  • 是什么导致了这个问题?我该怎么解决呢
  • 在不使用另一个流获取患者子集合(
    getPatientCollection
    )的情况下,是否有更好的方法获取子集合

  • Stream.forEach
    是与
    List.forEach
    (返回
    void
    )等价的
    流。它用于对每个元素执行一些操作,而不是返回新集合。如果您想将
    转换为
    列表
    ,您可以这样做。

    您刚刚救了我。我不知道我是怎么错过的。非常感谢你!