Untitled
unknown
dart
3 years ago
12 kB
14
Indexable
class MainDrawer extends StatelessWidget {
final AuthenticationManager authManager = Get.find();
final isArabic = TranslationService().isLocaleArabic();
@override
Widget build(BuildContext context) {
return Background(
safeAreaBottom: false,
safeAreaTop: false,
child: Drawer(
elevation: 0.0,
backgroundColor: AppColors.white,
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [
AppColors.primary.withOpacity(0.6),
AppColors.primary,
],
stops: [0.0, 1.0],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
child: Column(
children: [
// const Spacer(),
const SizedBox(height: 50.0),
Row(
children: [
Container(
height: Get.height * 0.08,
width: Get.height * 0.08,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
fit: BoxFit.cover,
image: CachedNetworkImageProvider(
authManager.appUser.value.profilePictureUrl != null
? authManager.appUser.value.profilePictureUrl!
: authManager.appUser.value.id != null
? authManager.commonTools
.getUserProfilePicture(authManager.appUser.value.id!)
: EMPTY_USER_IMAGE,
)),
border: Border.all(
color: Colors.transparent,
width: 1.0,
),
boxShadow: [AppStyles.primaryShadow],
),
).marginOnly(),
const SizedBox(
width: 10.0,
),
Flexible(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
FittedBox(
child: Text(
authManager.appUser.value.name ?? '',
style: Get.textTheme.headline5!.copyWith(
color: AppColors.white,
fontWeight: FontWeight.bold,
// fontSize: Get.height * 0.02,
),
),
),
FittedBox(
child: Text(
authManager.appUser.value.userName ?? '',
style: Get.textTheme.headline5!.copyWith(
color: AppColors.white,
fontWeight: FontWeight.bold,
// fontSize: Get.height * 0.018,
),
),
),
],
),
),
],
).paddingAll(15),
const SizedBox(height: 16.0),
],
),
),
Column(
children: [
const SizedBox(
height: 10,
),
DrawerItem(
icon: 'assets/svg/news.svg',
title: 'News',
onTap: () {
Get.to(
() => NewsView(),
binding: NewsBinding(),
);
},
),
DrawerItem(
icon: 'assets/svg/Notification1.svg',
title: 'notification',
onTap: () {
if (authManager.appUser.value.userCategory == GUEST_USER_CATEGORY) {
authManager.commonTools.guestDialog(context);
} else {
Get.to(
() => NotificationsView(),
binding: NotificationsBinding(),
arguments: [
authManager.appUser.value.id,
],
)!
.then((value) => authManager.api.getNotificationsCount());
}
},
counter: authManager.appUser.value.notificationNewCount != null
? authManager.appUser.value.notificationNewCount! > 0
? authManager.appUser.value.notificationNewCount.toString()
: null
: null,
),
DrawerItem(
icon: 'assets/svg/address1.svg',
title: 'address book',
onTap: () {
if (authManager.appUser.value.userCategory == GUEST_USER_CATEGORY) {
authManager.commonTools.guestDialog(context);
} else {
Get.to(
() => AddressBookView(),
binding: AddressBookBinding(),
);
}
},
),
DrawerItem(
icon: 'assets/svg/settings1.svg',
title: 'Settings',
onTap: () {
if (authManager.appUser.value.userCategory == GUEST_USER_CATEGORY) {
authManager.commonTools.guestDialog(context);
} else {
Get.to(
() => SettingsView(),
binding: SettingsBinding(),
);
}
},
),
DrawerItem(
icon: 'assets/svg/help.svg',
title: 'help',
onTap: () {
if (authManager.appUser.value.userCategory == GUEST_USER_CATEGORY) {
authManager.commonTools.guestDialog(context);
} else {
Get.to(
() => HelpView(),
binding: HelpBinding(),
);
}
},
),
DrawerItem(
icon: 'assets/svg/Finance.svg',
title: 'Wallet',
onTap: () {
Get.to(
() => WalletView(withAppBar: true),
binding: WalletBinding(),
);
},
),
Divider(
color: AppColors.grey.withOpacity(0.5),
).paddingSymmetric(horizontal: 15),
DrawerItem(
icon: 'assets/svg/privacy.svg',
title: 'Content & Privacy Policy',
onTap: () {
Get.to(
() => PrivacyView(),
binding: PrivacyBinding(),
);
},
),
// DrawerItem(
// icon: 'assets/svg/terms.svg',
// title: 'Terms & Conditions',
// onTap: () {
// Get.to(
// () => TermsView(),
// binding: TermsBinding(),
// );
// },
// ),
DrawerItem(
icon: 'assets/svg/contact.svg',
title: 'Contact Us',
onTap: () {
Get.to(
() => ContactView(),
binding: ContactBinding(),
);
},
),
Divider(
color: AppColors.grey.withOpacity(0.5),
).paddingSymmetric(horizontal: 15),
DrawerItem(
icon: authManager.appUser.value.userCategory == GUEST_USER_CATEGORY
? 'assets/svg/account_bnb.svg'
: 'assets/svg/logout.svg',
title: authManager.appUser.value.userCategory == GUEST_USER_CATEGORY ? 'login' : 'logout',
iconColor: authManager.appUser.value.userCategory == GUEST_USER_CATEGORY
? AppColors.primary
: null,
onTap: () async {
Get.back();
authManager.commonTools.showLoading();
Future.delayed(const Duration(milliseconds: 300), () async {
Get.back();
await authManager.logOut(true);
});
},
),
],
),
// const Spacer(
// flex: 4,
// ),
],
),
),
),
);
}
}
class DrawerItem extends StatelessWidget {
final String icon;
final String title;
final String? counter;
final Color? iconColor;
final Function() onTap;
const DrawerItem(
{Key? key, required this.icon, required this.title, required this.onTap, this.iconColor, this.counter})
: super(key: key);
@override
Widget build(BuildContext context) {
return InkWell(
child: IntrinsicHeight(
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
height: Get.height * 0.03,
width: Get.height * 0.03,
child: SvgPicture.asset(
icon,
color: iconColor,
),
),
const VerticalDivider(),
Text(
title.tr,
style: Get.textTheme.headline5!.copyWith(
fontWeight: FontWeight.bold,
// fontSize: Get.height * 0.02,
),
),
const SizedBox(
width: 8.0,
),
counter != null
? Container(
padding: const EdgeInsets.all(6.0),
decoration: BoxDecoration(
color: AppColors.red,
shape: BoxShape.circle,
),
child: Text(counter!,
style: Get.textTheme.subtitle2!.copyWith(
color: AppColors.white,
)),
)
: const SizedBox(),
],
),
).marginSymmetric(horizontal: 15, vertical: 10),
onTap: onTap,
);
}
}
Editor is loading...