I'm not sure which part of my code is wrong. I can't receive anything inside of my ScanStreamTransformer, as you can see in the code below here inside _itemsTransformer() I returned ScanStreamTransformer and I expected the print inside ScanStreamTransformer work or return the cache, but It does not work.
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();
}
}