fat(recipes, diets): added list refreshing

This commit is contained in:
misha
2026-03-16 10:32:12 +03:00
parent f5d14d213f
commit 5cb121d733
6 changed files with 55 additions and 15 deletions

View File

@@ -103,7 +103,7 @@ class _CreateDietScreenContentState extends State<CreateDietScreenContent> {
if (state.published) {
Future.delayed(const Duration(milliseconds: 500), () {
if (!context.mounted) return;
context.pop();
context.pop(true);
showBottomSheetWithBlur(
userRootNavigator: true,
context: context,
@@ -113,7 +113,7 @@ class _CreateDietScreenContentState extends State<CreateDietScreenContent> {
} else if (state.drafted) {
Future.delayed(const Duration(milliseconds: 500), () {
if (!context.mounted) return;
context.pop();
context.pop(true);
showBottomSheetWithBlur(
context: context,
child: SuccessPublishedDietOrPlanBottomSheet(title: state.dietData.name ?? 'Диета', isDrafted: true),
@@ -231,7 +231,7 @@ class _CreateDietScreenContentState extends State<CreateDietScreenContent> {
if (dietState == DietState.draft) {
Future.delayed(const Duration(milliseconds: 500), () {
if (!context.mounted) return;
context.pop();
context.pop(true);
showBottomSheetWithBlur(
userRootNavigator: true,
context: context,
@@ -241,7 +241,7 @@ class _CreateDietScreenContentState extends State<CreateDietScreenContent> {
} else {
Future.delayed(const Duration(milliseconds: 500), () {
if (!context.mounted) return;
context.pop();
context.pop(true);
showBottomSheetWithBlur(
context: context,
child: SuccessPublishedDietOrPlanBottomSheet(title: state.dietData.name ?? 'Диета', isDrafted: true),
@@ -304,7 +304,7 @@ class _CreateDietScreenContentState extends State<CreateDietScreenContent> {
} else {
Future.delayed(const Duration(milliseconds: 500), () {
if (!context.mounted) return;
context.pop();
context.pop(true);
showBottomSheetWithBlur(
userRootNavigator: true,
context: context,

View File

@@ -109,7 +109,7 @@ class _RecipeCreateScreenState extends State<RecipeCreateScreen> {
if (isSuccess) {
Future.delayed(const Duration(milliseconds: 500), () {
if (!context.mounted) return;
context.pop();
context.pop('active');
showBottomSheetWithBlur(
userRootNavigator: true,
context: context,
@@ -157,7 +157,7 @@ class _RecipeCreateScreenState extends State<RecipeCreateScreen> {
});
if (isSuccess) {
if (!context.mounted) return;
context.pop();
context.pop('drafted');
} else {
if (!context.mounted) return;
showErrorDialog(context, title: 'Не удалось сохранить черновик');

View File

@@ -107,7 +107,17 @@ class MyDietsScreenContent extends StatelessWidget {
),
),
const SizedBox(width: 12),
AddItemButton(onTap: () => GoRouter.of(context).pushNamed(CreateDietScreen.name, extra: {'isEditing': false})),
AddItemButton(
onTap: () async {
final result = await GoRouter.of(context).pushNamed(
CreateDietScreen.name,
extra: {'isEditing': false},
);
if (!context.mounted) return;
if (result == true) {
await context.read<MyDietsCubit>().loadAllDiets();
}
}),
const SizedBox(width: 4),
],
),

View File

@@ -38,9 +38,14 @@ class MyDietWidget extends StatefulWidget {
class _MyDietWidgetState extends State<MyDietWidget> {
Future<void> _editDiet(Diet diet, BuildContext context) async{
await GoRouter.of(context).pushNamed(CreateDietScreen.name, extra: {'diet': diet, 'isEditing': true});
final result = await GoRouter.of(context).pushNamed(
CreateDietScreen.name,
extra: {'diet': diet, 'isEditing': true},
);
if (!context.mounted) return;
await context.read<MyDietsCubit>().loadAllDiets();
if (result == true) {
await context.read<MyDietsCubit>().loadAllDiets();
}
}
void _suggestDiet(Diet diet) {
@@ -88,7 +93,14 @@ class _MyDietWidgetState extends State<MyDietWidget> {
void _createBasedOnChosen(Diet diet, BuildContext context) async {
await showErrorDialog(context, title: 'Предупреждение', description: 'Вы переходите к созданию новой диеты на основе скопированной');
if (!context.mounted) return;
GoRouter.of(context).pushNamed(CreateDietScreen.name, extra: {'diet': diet, 'isEditing': false});
final result = await GoRouter.of(context).pushNamed(
CreateDietScreen.name,
extra: {'diet': diet, 'isEditing': false},
);
if (!context.mounted) return;
if (result == true) {
await context.read<MyDietsCubit>().loadAllDiets();
}
}
void _deleteDiet(Diet diet, BuildContext context) async {

View File

@@ -74,8 +74,14 @@ class MyRecipesScreen extends StatelessWidget {
),
const SizedBox(width: 8),
InkWell(
onTap: () {
context.push(RecipeCreateScreen.path);
onTap: () async {
final result = await context.push(RecipeCreateScreen.path);
if (!context.mounted) return;
if (result == MyRecipesCubit.drafted) {
await context.read<MyRecipesCubit>().setDraftedState();
} else if (result == MyRecipesCubit.active) {
await context.read<MyRecipesCubit>().setActiveState();
}
},
borderRadius: BorderRadius.circular(100),
child: Container(

View File

@@ -155,7 +155,13 @@ class _MyRecipeWidgetState extends State<MyRecipeWidget> {
final fullRecipe = await context.read<MyRecipesCubit>().getRecipeById(widget.recipe.slug);
if (context.mounted) {
Navigator.pop(context); // close dialog
context.push(RecipeCreateScreen.path, extra: fullRecipe);
final result = await context.push(RecipeCreateScreen.path, extra: fullRecipe);
if (!context.mounted) return;
if (result == MyRecipesCubit.drafted) {
await context.read<MyRecipesCubit>().setDraftedState();
} else if (result == MyRecipesCubit.active) {
await context.read<MyRecipesCubit>().setActiveState();
}
}
},
height: 52,
@@ -236,10 +242,16 @@ class _MyRecipeWidgetState extends State<MyRecipeWidget> {
} else {
showErrorToast('Заполните все необходимые поля для публикации рецепта');
if (context.mounted) {
context.push(RecipeCreateScreen.path, extra: {
final result = await context.push(RecipeCreateScreen.path, extra: {
'recipe': fullRecipe,
'autoValidate': true,
});
if (!context.mounted) return;
if (result == MyRecipesCubit.drafted) {
await context.read<MyRecipesCubit>().setDraftedState();
} else if (result == MyRecipesCubit.active) {
await context.read<MyRecipesCubit>().setActiveState();
}
}
}
await createCubit.close();