feat(personalDiets): fixed PlanState widget in order to show personal diet state

This commit is contained in:
misha
2025-10-02 13:49:58 +03:00
parent 8e72350152
commit 46841fb502
6 changed files with 104 additions and 123 deletions

View File

@@ -5,42 +5,65 @@ import 'package:eatvio_app/features/plans/enums/chosen_plan_state_enum.dart';
import 'package:eatvio_app/generated/l10n.dart';
import 'package:flutter/material.dart';
class PlanState extends StatelessWidget {
PlanState({super.key, required this.state});
class PlanState extends StatefulWidget {
const PlanState({super.key, required this.state, required this.hasPersonalDiet});
final ChosenPlanStateEnum state;
final List<List<ChosenPlanStateEnum>> states = [
[
ChosenPlanStateEnum.stateInited,
ChosenPlanStateEnum.stateInCoordination,
],
[
ChosenPlanStateEnum.stateStartDateHasBeenSet,
ChosenPlanStateEnum.statePendingPayment,
],
[
ChosenPlanStateEnum.statePaid,
],
[
ChosenPlanStateEnum.stateStarted,
ChosenPlanStateEnum.stateInProgress,
ChosenPlanStateEnum.stateLastDayStarted,
ChosenPlanStateEnum.stateLastDayFinished,
],
[
ChosenPlanStateEnum.stateComplained,
ChosenPlanStateEnum.stateDone,
ChosenPlanStateEnum.stateChargeWasCollected,
]
];
final bool hasPersonalDiet;
@override
State<PlanState> createState() => _PlanStateState();
}
class _PlanStateState extends State<PlanState> {
late final List<List<ChosenPlanStateEnum>> states;
@override
void initState() {
super.initState();
if (widget.hasPersonalDiet) {
states = [
[ChosenPlanStateEnum.stateInited, ChosenPlanStateEnum.stateInCoordination],
[ChosenPlanStateEnum.stateStartDateHasBeenSet, ChosenPlanStateEnum.statePendingPayment],
[ChosenPlanStateEnum.statePaid],
[ChosenPlanStateEnum.personalDietSet],
[
ChosenPlanStateEnum.stateStarted,
ChosenPlanStateEnum.stateInProgress,
ChosenPlanStateEnum.stateLastDayStarted,
ChosenPlanStateEnum.stateLastDayFinished,
],
[ChosenPlanStateEnum.stateComplained, ChosenPlanStateEnum.stateDone, ChosenPlanStateEnum.stateChargeWasCollected],
];
} else {
states = [
[ChosenPlanStateEnum.stateInited, ChosenPlanStateEnum.stateInCoordination],
[ChosenPlanStateEnum.stateStartDateHasBeenSet, ChosenPlanStateEnum.statePendingPayment],
[ChosenPlanStateEnum.statePaid],
[
ChosenPlanStateEnum.stateStarted,
ChosenPlanStateEnum.stateInProgress,
ChosenPlanStateEnum.stateLastDayStarted,
ChosenPlanStateEnum.stateLastDayFinished,
],
[ChosenPlanStateEnum.stateComplained, ChosenPlanStateEnum.stateDone, ChosenPlanStateEnum.stateChargeWasCollected],
];
}
}
@override
Widget build(BuildContext context) {
final s = S.of(context);
final titles = [s.order_created, s.startDateHasBeenSet, s.order_paid, s.in_progress, s.done];
final List<String> titles;
if (widget.hasPersonalDiet) {
titles = [s.order_created, s.startDateHasBeenSet, s.order_paid, s.personal_diet_set, s.in_progress, s.done];
} else {
titles = [s.order_created, s.startDateHasBeenSet, s.order_paid, s.in_progress, s.done];
}
return MainBackgroundBouble(
padding: const EdgeInsets.all(16),
child: Column(
children: List.generate(states.length, (index) {
final color = index <= states.indexWhere((element) => element.contains(state)) ? appTheme.greenA700 : appTheme.lightGray00;
final color = index <= states.indexWhere((element) => element.contains(widget.state)) ? appTheme.greenA700 : appTheme.lightGray00;
final text = titles[index];
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -51,29 +74,16 @@ class PlanState extends StatelessWidget {
width: 24,
height: 24,
decoration: BoxDecoration(shape: BoxShape.circle, color: color),
child: Center(
child: Icon(
Icons.check,
color: appTheme.whiteA700,
size: 14,
),
),
child: Center(child: Icon(Icons.check, color: appTheme.whiteA700, size: 14)),
),
const SizedBox(width: 12),
Text(
text,
style: TextStyles.textMMedium.copyWith(color: appTheme.black),
),
Text(text, style: TextStyles.textMMedium.copyWith(color: appTheme.black)),
],
),
Padding(
padding: const EdgeInsets.only(left: 12),
child: Container(
height: 12,
width: 1,
color: color,
),
)
child: Container(height: 12, width: 1, color: color),
),
],
);
}),