import 'dart:async'; import 'package:mnemo_cards_common/mnemo_cards_common.dart'; import 'package:rxdart/rxdart.dart'; class LoadingPacksHolder { final StreamController _streamController = StreamController.broadcast(); LoadingPacksState? _state; LoadingPacksHolder(); void addLoadingPack( CardPackLoadingDto dto, ) { _state = LoadingPacksState({ ...?_state?.packs.where((p) => p.id != dto.id), dto, }); _streamController.add(_state); } void removeLoadingPack( String id, ) { _state = LoadingPacksState( {...?_state?.packs.where((p) => p.id != id)}, ); _streamController.add(_state); } void clear() { _state = null; _streamController.add(_state); } LoadingPacksState? get state => _state; Stream get asStream => _streamController.stream.startWith(_state); } class LoadingPacksState { final Set packs; LoadingPacksState( this.packs, ); }