1+ import 'dart:developer' ;
2+
13import 'package:equatable/equatable.dart' ;
24import 'package:flutter_bloc/flutter_bloc.dart' ;
35import 'package:freezed_annotation/freezed_annotation.dart' ;
@@ -16,6 +18,7 @@ class ContestsBloc extends Bloc<ContestsEvent, ContestsState> {
1618 ContestsBloc () : super (const ContestsState ()) {
1719 on < FetchContests > (_fetchContests);
1820 on < UpdateFilter > (_updateFilter);
21+ on < FilterButton > (_filterButton);
1922 }
2023
2124 void _fetchContests (FetchContests event, Emitter <ContestsState > emit) async {
@@ -24,10 +27,28 @@ class ContestsBloc extends Bloc<ContestsEvent, ContestsState> {
2427 _upcoming = [...? contest? .upcoming];
2528 applyFilter ();
2629 final contests = [..._filteredUpcoming, ..._filteredOngoing];
27- emit (state.copyWith (contests: contests, isLoading: false ));
30+ emit (state.copyWith (
31+ contests: contests,
32+ isLoading: false ,
33+ filter: _filter,
34+ ));
35+ }
36+
37+ void _filterButton (FilterButton event, Emitter <ContestsState > emit) {
38+ _updatedfilter = _filter;
39+
40+ emit (state.copyWith (duration: _updatedfilter? .duration));
2841 }
2942
30- void _updateFilter (UpdateFilter event, Emitter <ContestsState > emit) {}
43+ void _updateFilter (UpdateFilter event, Emitter <ContestsState > emit) {
44+ if (event.updatedFilter != null ) _updatedfilter = event.updatedFilter;
45+ emit (
46+ state.copyWith (
47+ duration: event.duration ?? _updatedfilter? .duration,
48+ filter: event.updatedFilter ?? _updatedfilter,
49+ ),
50+ );
51+ }
3152
3253 void applyFilter () {
3354 _filteredOngoing = [];
@@ -53,7 +74,7 @@ class ContestsBloc extends Bloc<ContestsEvent, ContestsState> {
5374 }
5475 }
5576
56- ContestFilter ? _filter;
77+ ContestFilter ? _filter, _updatedfilter ;
5778 List <Ongoing > _ongoing = [], _filteredOngoing = [];
5879 List <Upcoming > _upcoming = [], _filteredUpcoming = [];
5980
@@ -70,8 +91,14 @@ class ContestsBloc extends Bloc<ContestsEvent, ContestsState> {
7091 }
7192
7293 _filter = StorageService .filter;
94+ _updatedfilter = _filter;
7395 add (const FetchContests ());
7496 }
97+
98+ void saveFilter () {
99+ log ('save filter is called' );
100+ _filter = _updatedfilter;
101+ }
75102}
76103
77104extension on ContestFilter {
0 commit comments