import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/pages/login_page.dart'; import 'package:test_sa/new_views/swipe_module/swipe_history_view.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/pages/user/notifications/notifications_page.dart'; import '../../controllers/providers/api/user_provider.dart'; import '../../controllers/providers/settings/setting_provider.dart'; import '../../views/pages/user/profile_page.dart'; import '../../views/widgets/dialogs/dialog.dart'; import '../pages/settings_page.dart'; class AppDrawer extends StatelessWidget { const AppDrawer({Key? key}) : super(key: key); @override Widget build(BuildContext context) { final settingProvider = Provider.of(context, listen: false); final userProvider = Provider.of(context, listen: false); return Drawer( backgroundColor: AppColor.background(context), width: MediaQuery.of(context).size.width * .8, child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ Consumer(builder: (context, snapshot, _) { return CircleAvatar( radius: 45, backgroundColor: context.isDark ? AppColor.neutral50 : AppColor.neutral40, child: Padding( padding: const EdgeInsets.all(1), // Border radius child: ClipOval( child: snapshot.profileImage != null ? Image.file(snapshot.profileImage!) : (snapshot.user?.profilePhotoName?.isNotEmpty ?? false) ? Image.network(snapshot.user!.profilePhotoName!) : const Icon(Icons.person, size: 50, color: Colors.white), ), ), ); }).onPress(() => Navigator.of(context).pushNamed(ProfilePage.id)), Icon( Icons.clear, size: 32, color: context.isDark ? AppColor.primary40 : Colors.white, ).onPress(() => Navigator.of(context).pop()) ], ), 8.height, (userProvider.user?.username ?? "").heading3(context).custom(fontWeight: FontWeight.w600), if ((userProvider.user?.email ?? "").isNotEmpty) (userProvider.user!.email!).heading6(context).custom(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), 18.height, const Divider().defaultStyle(context), ListView( padding: const EdgeInsets.only(top: 24), children: [ drawerItem("drawer_notification", context.translation.notifications, context).onPress(() => Navigator.of(context).pushNamed(NotificationsPage.id)), 18.height, // drawerItem("help_center", context.translation.helpCenter, context) /*.onPress(() => Navigator.of(context).pushNamed(HelpCenterPage.id))*/, // 18.height, // drawerItem("rate_us", context.translation.rateUs, context), // 18.height, drawerItem("setting", context.translation.settings, context).onPress(() => Navigator.of(context).pushNamed(SettingsPage.id)), 18.height, if (userProvider.user != null && userProvider.user?.employeeIsHMG == false) drawerItem("swipe", "Swipe History", context).onPress(() => Navigator.of(context).pushNamed(SwipeHistoryView.routeName)), // 18.height, // drawerItem("report", context.translation.reportBg, context) /*.onPress(() => Navigator.of(context).pushNamed(ReportBugPage.id))*/, // 18.height, // drawerItem("whats_new", context.translation.whatsNew, context), ], ).expanded, drawerItem("logout", context.translation.logout, context, color: context.isDark ? AppColor.redStatus(context) : AppColor.red50).onPress(() async { bool result = await showDialog( context: context, builder: (_) => AAlertDialog(title: context.translation.signOut, content: context.translation.logoutAlert), ); if (result) { bool isSuccess = await userProvider.logout(context); if (isSuccess) { settingProvider.resetSettings(); userProvider.reset(); Navigator.of(context).pop(); Navigator.of(context).pop(); Navigator.of(context).pushNamedAndRemoveUntil(LoginPage.routeName, (routes) => true); } } }), 18.height, const Divider().defaultStyle(context), 18.height, Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( "Powered By Cloud Solutions", style: AppTextStyles.heading3.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? AppColor.neutral30 : AppColor.neutral50, fontSize: 12), textScaleFactor: AppStyle.getScaleFactor(context), ), 6.width, Image.asset("assets/images/cloud_logo.png", width: 32, height: 32) ], ) ], ).paddingOnly(top: 66, start: 16, end: 24, bottom: 18), ); } Widget drawerItem(String icon, String title, BuildContext context, {Color? color}) { return Row( children: [ (icon ?? "").toSvgAsset(width: 24, height: 24, color: color ?? (context.isDark ? AppColor.neutral10 : AppColor.neutral20)), 16.width, Text( title, style: AppTextStyles.heading6.copyWith(color: color ?? (context.isDark ? AppColor.neutral30 : AppColor.neutral50)), ), ], ); } }