Flutter 为什么ScanStreamTransformer不返回任何内容
我不确定我的代码哪一部分是错的。我无法在我的Flutter 为什么ScanStreamTransformer不返回任何内容,flutter,dart,rxdart,Flutter,Dart,Rxdart,我不确定我的代码哪一部分是错的。我无法在我的ScanStreamTransformer中接收任何内容,正如您在下面的\u itemsTransformer()中看到的,我返回了ScanStreamTransformer,我希望ScanStreamTransformer中的打印工作或返回缓存,但它不工作 class CardBloc { final _repo = Repository(); final _tIds = PublishSubject<List<int>&g
ScanStreamTransformer
中接收任何内容,正如您在下面的\u itemsTransformer()
中看到的,我返回了ScanStreamTransformer
,我希望ScanStreamTransformer
中的打印工作或返回缓存,但它不工作
class CardBloc {
final _repo = Repository();
final _tIds = PublishSubject<List<int>>();
final _itemsOt = BehaviorSubject<Map<int, Future<ItemModel>>>();
final _itemsFt = PublishSubject<int>();
Stream<List<int>> get topIds => _tIds.stream;
Stream<Map<int, Future<ItemModel>>> get items => _itemsOt.stream;
Function(int) get fetchItem => _itemsFt.sink.add;
fetchIds() async {
final ids = await _repo.fetchIds();
_tIds.sink.add(ids);
}
CardBloc() {
_itemsFt.stream.transform(_itemsTransformer()).pipe(_itemsOt);
}
_itemsTransformer() {
return ScanStreamTransformer(
(Map<int, Future<ItemModel>> cache, int id, index) {
print('should be print!');
cache[id] = _repo.fetchItem(id);
return cache;
},
<int, Future<ItemModel>>{},
);
}
dispose() {
_tIds.close();
_itemsOt.close();
_itemsFt.close();
}
}
class CardBloc{
最终_repo=Repository();
最终_tIds=PublishSubject();
final _itemsOt=行为主体();
最终_itemsFt=PublishSubject();
Stream get topIds=>\u tIds.Stream;
Stream get items=>\u itemsOt.Stream;
函数(int)get fetchItem=>\u itemsFt.sink.add;
fetchIds()异步{
final id=wait_repo.fetchIds();
_tIds.sink.add(ID);
}
CardBloc(){
_itemsFt.stream.transform(_itemsTransformer()).pipe(_itemsOt);
}
_itemsTransformer(){
回程扫描变压器(
(映射缓存,int-id,索引){
打印('应该是打印!');
cache[id]=\u repo.fetchItem(id);
返回缓存;
},
{},
);
}
处置{
_tIds.close();
_itemsOt.close();
_itemsFt.close();
}
}
似乎\u itemsFt.stream中没有项目,或者没有人listen()
s to\u itemsOt
@pskink谢谢,我没有插入我所有的代码类,我更新了问题,我想现在更清楚了,我想did@pskink,你说得对,我忘了将数据传递给fetchItem
,由于该\u itemsFt.stream
没有数据,再次感谢您提及您的欢迎,顺便问一下,您为什么需要管道
,第二个\u itemsOt
流?transform()
方法返回一个流
,这样您就可以直接使用它,而无需管道