Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:async';
- import 'package:meta/meta.dart';
- import 'package:bloc/bloc.dart';
- import 'package:flutter_todos/blocs/blocs.dart';
- class StatsBloc extends Bloc<StatsEvent, StatsState> {
- final TodosBloc todosBloc;
- StreamSubscription todosSubscription;
- StatsBloc({@required this.todosBloc}) {
- todosSubscription = todosBloc.state.listen((state) {
- if (state is TodosLoaded) {
- dispatch(UpdateStats(state.todos));
- }
- });
- }
- @override
- StatsState get initialState => StatsLoading();
- @override
- Stream<StatsState> mapEventToState(
- StatsState currentState,
- StatsEvent event,
- ) async* {
- if (event is UpdateStats) {
- int numActive =
- event.todos.where((todo) => !todo.complete).toList().length;
- int numCompleted =
- event.todos.where((todo) => todo.complete).toList().length;
- yield StatsLoaded(numActive, numCompleted);
- }
- }
- @override
- void dispose() {
- todosSubscription.cancel();
- super.dispose();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement