Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. import 'dart:async';
  2. import 'package:meta/meta.dart';
  3. import 'package:bloc/bloc.dart';
  4. import 'package:flutter_todos/blocs/blocs.dart';
  5.  
  6. class StatsBloc extends Bloc<StatsEvent, StatsState> {
  7. final TodosBloc todosBloc;
  8. StreamSubscription todosSubscription;
  9.  
  10. StatsBloc({@required this.todosBloc}) {
  11. todosSubscription = todosBloc.state.listen((state) {
  12. if (state is TodosLoaded) {
  13. dispatch(UpdateStats(state.todos));
  14. }
  15. });
  16. }
  17.  
  18. @override
  19. StatsState get initialState => StatsLoading();
  20.  
  21. @override
  22. Stream<StatsState> mapEventToState(
  23. StatsState currentState,
  24. StatsEvent event,
  25. ) async* {
  26. if (event is UpdateStats) {
  27. int numActive =
  28. event.todos.where((todo) => !todo.complete).toList().length;
  29. int numCompleted =
  30. event.todos.where((todo) => todo.complete).toList().length;
  31. yield StatsLoaded(numActive, numCompleted);
  32. }
  33. }
  34.  
  35. @override
  36. void dispose() {
  37. todosSubscription.cancel();
  38. super.dispose();
  39. }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement