Files
eatvio_app/lib/widgets/custom_navigation_menu.dart
2024-08-21 16:26:02 +03:00

80 lines
2.5 KiB
Dart

import 'package:eatvio_app/core/app_export.dart';
import 'package:eatvio_app/widgets/custom_navigation_menu_item.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:hive/hive.dart';
import 'package:http/http.dart' as http;
class CustomNavigationMenu extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
MenuItem(
icon: ImageConstant.icnProfileSettings,
text: 'Настройки профиля',
onTap: () => GoRouter.of(context).push('/my-settings-screen'),
),
MenuItem(
icon: ImageConstant.icnRecipes,
text: 'Мои рецепты',
onTap: () => GoRouter.of(context).push('/recipe-select-screen'),
),
MenuItem(
icon: ImageConstant.icnVeggies,
text: 'Мои диеты',
onTap: () => GoRouter.of(context).push('/diet-select-screen'),
),
MenuItem(
icon: ImageConstant.icnPlans,
text: 'Мои планы',
onTap: () => GoRouter.of(context).push('/plan-select-screen'),
),
MenuItem(
icon: ImageConstant.icnPlans,
text: 'Календарь',
onTap: () => GoRouter.of(context).push('/calendar-screen'),
),
MenuItem(
icon: ImageConstant.icnGlossary,
text: 'Глоссарий',
onTap: () => GoRouter.of(context).push('/glossary-screen'),
),
MenuItem(
icon: ImageConstant.icnSupport,
text: 'Поддержка',
onTap: () {},
),
MenuItem(
icon: ImageConstant.icnExit,
text: 'Выход',
onTap: _onTapLogout(context),
),
],
),
);
}
}
_onTapLogout(BuildContext context) {
return () async {
final box = await Hive.openBox('token');
final token = box.get('token');
final response = await http.post(
Uri.parse(baseUrl + '/api/profile/logout'),
headers: {
'Authorization': 'Bearer $token',
},
);
if (response.statusCode == 204) {
print(response.statusCode);
box.delete('token'); // Удаляем токен из Hive
GoRouter.of(context).go('/auth-screen');
}
};
}