Why ScanStreamTransformer is not return anything

Viewed 136

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();
  }
}
0 Answers
Related