import 'package:flutter/material.dart'; import 'package:ftc_mobile_app/ftc_mobile_app.dart'; import 'package:ftc_mobile_app/view/screens/webview/webview_screen.dart'; import 'package:get/get.dart'; import 'my_circle_image.dart'; class CustomDrawer extends StatefulWidget { const CustomDrawer({Key? key}) : super(key: key); @override State createState() => _CustomDrawerState(); } class _CustomDrawerState extends State { DashboardScreenController dashboardController = Get.put(DashboardScreenController()); CustomNavigationDrawerController drawerController = Get.put(CustomNavigationDrawerController()); @override Widget build(BuildContext context) { return Drawer( elevation: 5, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(1.r)), backgroundColor: CustomAppColors.kPrimaryColor, surfaceTintColor: CustomAppColors.kPrimaryColor, child: SafeArea( child: Column( children: [ 40.verticalSpace, SizedBox( width: double.infinity, child: Column( mainAxisSize: MainAxisSize.max, children: [ Center( child: GestureDetector( onTap: () { // drawerController.selectedIndex.value = -1; // Navigator.pop(context); // Navigator.pushNamed( // context, CustomRouteNames.kViewProfileScreenRoute); }, child: Obx(() { return MyCircleImage( imageSize: 80.r, url: "${WebUrls.baseUrl}${DashboardScreenController.instance.myProfileData()?.profilePictureUrl ?? ""}", errorWidget: CustomImageWidget( imagePath: AssetsManager.kPersonMainIcon, imageColor: CustomAppColors.kDarkBlueTextColor, height: 80.r, width: 80.r, ), ); }), ), ), 10.verticalSpace, Obx( () => CustomTextWidget( text: DashboardScreenController.instance .myProfileData() ?.displayName ?? "", textAlign: TextAlign.center, fontColor: CustomAppColors.kBlackColor, fontWeight: FontWeight.w600, fontSize: 14.sp, ), ), ], ), ), Expanded( child: Container( width: double.infinity, padding: EdgeInsets.only(top: 20.h, bottom: 20.h), child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ _getDrawerNavItem( title: "Home", iconPath: AssetsManager.kHomeIcon, color: CustomAppColors.kLightGreyColor, selected: drawerController.selectedIndex.value == 1, onTap: () { Navigator.pop(context); dashboardController.selectedIndex.value = 1; drawerController.selectedIndex.value = 1; }), 6.verticalSpace, _getDrawerNavItem( title: "Policies and Procedures", iconPath: AssetsManager.kPoliciesIcon, color: CustomAppColors.kLightGreyColor, onTap: () { Navigator.pop(context); Navigator.pushNamed( context, CustomRouteNames.kWebviewScreen, arguments: WebviewScreenArgument( title: 'Policies and Procedures', url: ConstantText.privacyUrl), ); }), 6.verticalSpace, _getDrawerNavItem( title: "Settings", iconPath: AssetsManager.kSettingsIcon, color: CustomAppColors.kLightGreyColor, onTap: () { Navigator.pop(context); //Todo: uncomment when start working // Navigator.pushNamed( // context, // CustomRouteNames.kSettingsScreen, // ); }), 6.verticalSpace, _getDrawerNavItem( title: "Notifications", iconPath: AssetsManager.kBellIcon, color: CustomAppColors.kLightGreyColor, selected: drawerController.selectedIndex.value == 6, onTap: () { Navigator.pop(context); //Todo: uncomment // Navigator.pushNamed( // context, // CustomRouteNames.kNotificationListScreenRoute, // ); }), ], ), ), ), ], ), ), ); } Widget _getDrawerNavItem( {required String title, required String iconPath, Color color = CustomAppColors.kSecondaryColor, bool selected = false, required Function() onTap}) { return Container( color: selected ? CustomAppColors.kSecondaryColor : CustomAppColors.kPrimaryColor, padding: REdgeInsets.symmetric(horizontal: 26, vertical: 12), child: GestureDetector( onTap: onTap, // onTap: ()=> controller.onTap(title), child: Row( children: [ // Icon( // icon, // size: 27, // color: selected ? CustomAppColors.kWhiteColor : color, // ), CustomImageWidget( imagePath: iconPath, width: title == "Clients" ? 20.w : 22.w, height: title == "Clients" ? 20.h : 26.h, // height: 26.h, imageColor: selected ? CustomAppColors.kWhiteColor : color, ), 10.horizontalSpace, Expanded( child: CustomTextWidget( text: title, textAlign: TextAlign.left, fontColor: selected ? CustomAppColors.kWhiteColor : CustomAppColors.kIconColor, fontSize: 18.sp, ), ), ], ), ), ); } }