mnemo_cards/lib/features/packs/pack_holder.dart
2024-08-18 20:02:36 +03:00

40 lines
834 B
Dart

import 'dart:async';
import 'package:rxdart/rxdart.dart';
class PackHolder {
final StreamController<PackState> _streamController =
StreamController.broadcast();
PackState _state;
PackHolder() : _state = PackState.empty;
void setPacksWithCards(
Iterable<String> packs,
) {
_state = PackState(packs.toSet());
_streamController.add(_state);
}
void removePackWithCards(String id) =>
setPacksWithCards(state.packsWithCards.toList()..remove(id));
void clear() {
_state = PackState.empty;
_streamController.add(_state);
}
PackState get state => _state;
Stream<PackState> get asStream => _streamController.stream.startWith(_state);
}
class PackState {
final Set<String> packsWithCards;
static const empty = PackState({});
const PackState(
this.packsWithCards,
);
}