Skip to content

Commit e68a8b5

Browse files
committed
feat(schedule-create): initialize cubits after submitting each page and update spare time state with overlap checks
1 parent 4290bbc commit e68a8b5

File tree

4 files changed

+32
-28
lines changed

4 files changed

+32
-28
lines changed

lib/presentation/schedule_create/components/schedule_multi_page_form.dart

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -124,22 +124,34 @@ class _ScheduleMultiPageFormState extends State<ScheduleMultiPageForm>
124124
switch (_pageCubitTypes[_tabController.index]) {
125125
case const (ScheduleNameCubit):
126126
context.read<ScheduleNameCubit>().scheduleNameSubmitted();
127+
// Initialize next cubit after submitting current page
128+
WidgetsBinding.instance.addPostFrameCallback((_) {
129+
context.read<ScheduleDateTimeCubit>().initialize();
130+
});
127131
break;
128132
case const (ScheduleDateTimeCubit):
129133
context.read<ScheduleDateTimeCubit>().scheduleDateTimeSubmitted();
134+
// Initialize next cubit after submitting current page
135+
WidgetsBinding.instance.addPostFrameCallback((_) {
136+
context.read<SchedulePlaceMovingTimeCubit>().initialize();
137+
});
130138
break;
131139
case const (SchedulePlaceMovingTimeCubit):
132140
context
133141
.read<SchedulePlaceMovingTimeCubit>()
134142
.schedulePlaceMovingTimeSubmitted();
143+
// Initialize next cubit after submitting current page
144+
WidgetsBinding.instance.addPostFrameCallback((_) {
145+
context.read<ScheduleFormSpareTimeCubit>().initialize();
146+
});
135147
break;
136148
case const (ScheduleFormSpareTimeCubit):
137149
context.read<ScheduleFormSpareTimeCubit>().scheduleSpareTimeSubmitted();
138150
break;
139151
}
140152
if (_tabController.index < _tabController.length - 1) {
141153
_updateCurrentPageIndex(_tabController.index + 1);
142-
_revalidateCurrentStep(context);
154+
_reinitializeCurrentStep(context);
143155
} else {
144156
widget.onSaved?.call();
145157
Navigator.of(context).pop(); // Close the form
@@ -167,7 +179,6 @@ class _ScheduleMultiPageFormState extends State<ScheduleMultiPageForm>
167179
}
168180

169181
void _updateCurrentPageIndex(int index) {
170-
final previousIndex = _tabController.index;
171182
_tabController.index = index;
172183
_pageViewController.animateToPage(
173184
index,
@@ -176,31 +187,19 @@ class _ScheduleMultiPageFormState extends State<ScheduleMultiPageForm>
176187
);
177188
}
178189

179-
void _revalidateCurrentStep(BuildContext context) {
190+
void _reinitializeCurrentStep(BuildContext context) {
180191
switch (_pageCubitTypes[_tabController.index]) {
181192
case const (ScheduleNameCubit):
182-
final currentState = context.read<ScheduleNameCubit>().state;
183-
context
184-
.read<ScheduleFormBloc>()
185-
.add(ScheduleFormValidated(isValid: currentState.isValid));
193+
context.read<ScheduleNameCubit>().initialize();
186194
break;
187195
case const (ScheduleDateTimeCubit):
188-
final currentState = context.read<ScheduleDateTimeCubit>().state;
189-
context
190-
.read<ScheduleFormBloc>()
191-
.add(ScheduleFormValidated(isValid: currentState.isValid));
196+
context.read<ScheduleDateTimeCubit>().initialize();
192197
break;
193198
case const (SchedulePlaceMovingTimeCubit):
194-
final currentState = context.read<SchedulePlaceMovingTimeCubit>().state;
195-
context
196-
.read<ScheduleFormBloc>()
197-
.add(ScheduleFormValidated(isValid: currentState.isValid));
199+
context.read<SchedulePlaceMovingTimeCubit>().initialize();
198200
break;
199201
case const (ScheduleFormSpareTimeCubit):
200-
final currentState = context.read<ScheduleFormSpareTimeCubit>().state;
201-
context
202-
.read<ScheduleFormBloc>()
203-
.add(ScheduleFormValidated(isValid: currentState.isValid));
202+
context.read<ScheduleFormSpareTimeCubit>().initialize();
204203
break;
205204
}
206205
}

lib/presentation/schedule_create/schedule_date_time/cubit/schedule_date_time_cubit.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ class ScheduleDateTimeCubit extends Cubit<ScheduleDateTimeState> {
2121
@factoryParam this.scheduleFormBloc,
2222
this._loadAdjacentSchedulesWithPreparationUseCase,
2323
this._getNextScheduleWithPreparationUseCase,
24-
) : super(ScheduleDateTimeState()) {
25-
initialize();
26-
}
24+
) : super(ScheduleDateTimeState());
2725

2826
final ScheduleFormBloc scheduleFormBloc;
2927
final LoadAdjacentScheduleWithPreparationUseCase

lib/presentation/schedule_create/schedule_place_moving_time.dart/cubit/schedule_place_moving_time_cubit.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ part 'schedule_place_moving_time_state.dart';
1212

1313
class SchedulePlaceMovingTimeCubit extends Cubit<SchedulePlaceMovingTimeState> {
1414
SchedulePlaceMovingTimeCubit({required this.scheduleFormBloc})
15-
: super(SchedulePlaceMovingTimeState()) {
16-
initialize();
17-
}
15+
: super(SchedulePlaceMovingTimeState());
1816

1917
final ScheduleFormBloc scheduleFormBloc;
2018

lib/presentation/schedule_create/schedule_spare_and_preparing_time/cubit/schedule_form_spare_time_cubit.dart

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ part 'schedule_form_spare_time_state.dart';
1313
class ScheduleFormSpareTimeCubit extends Cubit<ScheduleFormSpareTimeState> {
1414
ScheduleFormSpareTimeCubit({
1515
required this.scheduleFormBloc,
16-
}) : super(ScheduleFormSpareTimeState()) {
17-
initialize();
18-
}
16+
}) : super(ScheduleFormSpareTimeState());
1917

2018
final ScheduleFormBloc scheduleFormBloc;
2119

@@ -65,10 +63,21 @@ class ScheduleFormSpareTimeCubit extends Cubit<ScheduleFormSpareTimeState> {
6563
final schedulePlaceMovingTimeState =
6664
ScheduleFormSpareTimeState.fromScheduleFormState(
6765
scheduleFormBloc.state);
66+
67+
final formState = scheduleFormBloc.state;
68+
final overlapCheck = _checkOverlap(
69+
totalPreparationTime: schedulePlaceMovingTimeState.totalPreparationTime,
70+
moveTime: formState.moveTime,
71+
spareTime: schedulePlaceMovingTimeState.spareTime.value,
72+
);
73+
6874
emit(state.copyWith(
6975
spareTime: schedulePlaceMovingTimeState.spareTime,
7076
preparation: schedulePlaceMovingTimeState.preparation,
7177
totalPreparationTime: schedulePlaceMovingTimeState.totalPreparationTime,
78+
overlapDuration: overlapCheck.overlapDuration,
79+
isOverlapping: overlapCheck.isOverlapping,
80+
clearOverlap: overlapCheck.overlapDuration == null,
7281
));
7382
scheduleFormBloc.add(ScheduleFormValidated(isValid: state.isValid));
7483
}

0 commit comments

Comments
 (0)