RxDart toList运算符永远不会启动/结束流

时间:2019-08-26 18:12:38

标签: flutter rxdart

大家好,我是新手, 我正在尝试从firebase的几本文档(列表)中获取什么,并将它们组合到一个列表中 但是陌生人的行为阻止了信息流开始/结束

我来自android native世界,我尝试过类似的代码,它可以工作,但是使用RxDart却不起作用:(

这是我的代码:

class AdvanceSearchBloc extends BaseBlock {
  Observable<List<Nanny>> nanniesStream;
  PublishSubject<List<AreaItem>> chosenAreaSink = PublishSubject<List<AreaItem>>();

  AdvanceSearchBloc() {
    FireBaseApi fireBaseApi = FireBaseApi();

    nanniesStream = chosenAreaSink
        .concatMap((areas) {
          logInfo("areas size: ${areas.length}");
          return Observable.fromIterable(areas)
              .flatMap((area) => _searchAreaNannies(area.name, fireBaseApi))
              .toList()
              .asObservable();
        })
        .asyncMap((nannyListOfList) {
          logInfo("***********list of list size ${nannyListOfList.length} ***********");
          List<Nanny> nannies = List<Nanny>();
          nannyListOfList.forEach((list) {
            list.forEach((nanny) => nannies.add(nanny));
          });
          return nannies;
        });
  }

  @override
  void dispose(){
    chosenAreaSink.close();
  }

  static Stream<List<Nanny>> _searchAreaNannies(String area, FireBaseApi api) {
    return api.searchNanniesByArea(area);
  }
}

_searchAreaNannies函数在我尝试搜索一个区域时工作良好。 我希望流将开始并获得一个Marge列表的正确结果

0 个答案:

没有答案