forked from eatvio/eatvio_app
fat(recipes, diets): added list refreshing
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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: 'Не удалось сохранить черновик');
|
||||
|
||||
@@ -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),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user