@@ -5,26 +5,41 @@ import 'dart:async';
55import 'package:dartz/dartz.dart' ;
66part 'select_option_type_option_bloc.freezed.dart' ;
77
8- class SelectOptionTypeOptionBloc extends Bloc <SelectOptionTypeOptionEvent , SelectOptionTyepOptionState > {
9- SelectOptionTypeOptionBloc ({required List <SelectOption > options})
10- : super (SelectOptionTyepOptionState .initial (options)) {
8+ abstract class SelectOptionTypeOptionAction {
9+ Future <List <SelectOption >> Function (String ) get insertOption;
10+
11+ List <SelectOption > Function (SelectOption ) get deleteOption;
12+
13+ List <SelectOption > Function (SelectOption ) get udpateOption;
14+ }
15+
16+ class SelectOptionTypeOptionBloc extends Bloc <SelectOptionTypeOptionEvent , SelectOptionTypeOptionState > {
17+ final SelectOptionTypeOptionAction typeOptionAction;
18+
19+ SelectOptionTypeOptionBloc ({
20+ required List <SelectOption > options,
21+ required this .typeOptionAction,
22+ }) : super (SelectOptionTypeOptionState .initial (options)) {
1123 on < SelectOptionTypeOptionEvent > (
1224 (event, emit) async {
13- await event.map (
14- createOption: (_CreateOption value) async {
15- emit (state.copyWith (isEditingOption: true , newOptionName: Some (value.optionName)));
25+ await event.when (
26+ createOption: (optionName) async {
27+ final List <SelectOption > options = await typeOptionAction.insertOption (optionName);
28+ emit (state.copyWith (options: options));
1629 },
17- addingOption: (_AddingOption value ) {
30+ addingOption: () {
1831 emit (state.copyWith (isEditingOption: true , newOptionName: none ()));
1932 },
20- endAddingOption: (_EndAddingOption value ) {
33+ endAddingOption: () {
2134 emit (state.copyWith (isEditingOption: false , newOptionName: none ()));
2235 },
23- updateOption: (_UpdateOption value) {
24- emit (state.copyWith (updateOption: Some (value.option)));
36+ updateOption: (option) {
37+ final List <SelectOption > options = typeOptionAction.udpateOption (option);
38+ emit (state.copyWith (options: options));
2539 },
26- deleteOption: (_DeleteOption value) {
27- emit (state.copyWith (deleteOption: Some (value.option)));
40+ deleteOption: (option) {
41+ final List <SelectOption > options = typeOptionAction.deleteOption (option);
42+ emit (state.copyWith (options: options));
2843 },
2944 );
3045 },
@@ -47,20 +62,16 @@ class SelectOptionTypeOptionEvent with _$SelectOptionTypeOptionEvent {
4762}
4863
4964@freezed
50- class SelectOptionTyepOptionState with _$SelectOptionTyepOptionState {
51- const factory SelectOptionTyepOptionState ({
65+ class SelectOptionTypeOptionState with _$SelectOptionTypeOptionState {
66+ const factory SelectOptionTypeOptionState ({
5267 required List <SelectOption > options,
5368 required bool isEditingOption,
5469 required Option <String > newOptionName,
55- required Option <SelectOption > updateOption,
56- required Option <SelectOption > deleteOption,
5770 }) = _SelectOptionTyepOptionState ;
5871
59- factory SelectOptionTyepOptionState .initial (List <SelectOption > options) => SelectOptionTyepOptionState (
72+ factory SelectOptionTypeOptionState .initial (List <SelectOption > options) => SelectOptionTypeOptionState (
6073 options: options,
6174 isEditingOption: false ,
6275 newOptionName: none (),
63- updateOption: none (),
64- deleteOption: none (),
6576 );
6677}
0 commit comments