forked from eatvio/eatvio_app
89 lines
2.9 KiB
Dart
89 lines
2.9 KiB
Dart
import 'package:eatvio_app/core/app_export.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:eatvio_app/widgets/custom_navigation_menu_item.dart';
|
|
import 'package:hive/hive.dart';
|
|
import 'package:flutter_dotenv/flutter_dotenv.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.imgSettings,
|
|
text: 'Настройки профиля',
|
|
onTap: () => Navigator.pushNamed(context, AppRoutes.mySettings),
|
|
),
|
|
MenuItem(
|
|
icon: ImageConstant.imgRecipes,
|
|
text: 'Мои рецепты',
|
|
onTap: () =>
|
|
Navigator.pushNamed(context, AppRoutes.recipeSelectScreen),
|
|
// Действие при нажатии на "Мои рецепты"
|
|
),
|
|
MenuItem(
|
|
icon: ImageConstant.imgDiets,
|
|
text: 'Мои диеты',
|
|
onTap: () =>
|
|
Navigator.pushNamed(context, AppRoutes.dietSelectScreen),
|
|
// Действие при нажатии на "Мои рецепты"
|
|
),
|
|
MenuItem(
|
|
icon: ImageConstant.imgPlans,
|
|
text: 'Мои планы',
|
|
onTap: () =>
|
|
Navigator.pushNamed(context, AppRoutes.planSelectScreen),
|
|
// Действие при нажатии на "Мои рецепты"
|
|
),
|
|
MenuItem(
|
|
icon: ImageConstant.imgFinance,
|
|
text: 'Финансы',
|
|
onTap: () {
|
|
// Действие при нажатии на "Финансы"
|
|
},
|
|
),
|
|
MenuItem(
|
|
icon: ImageConstant.imgSupport,
|
|
text: 'Поддержка',
|
|
onTap: () {
|
|
// Действие при нажатии на "Поддержка"
|
|
},
|
|
),
|
|
MenuItem(
|
|
icon: ImageConstant.imgExit,
|
|
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(dotenv.env['SERVER_ROOT']! + '/profile/logout'),
|
|
headers: {
|
|
'Authorization': 'Bearer $token',
|
|
},
|
|
);
|
|
|
|
if (response.statusCode == 204) {
|
|
print(response.statusCode);
|
|
box.delete('token'); // Удаляем токен из Hive
|
|
Navigator.pushNamed(
|
|
context,
|
|
AppRoutes.authScreen,
|
|
);
|
|
}
|
|
};
|
|
}
|