diff --git a/app_petty_cash/lib/widget/custom_drawer.dart b/app_petty_cash/lib/widget/custom_drawer.dart index 39c3add..1a2e9a2 100644 --- a/app_petty_cash/lib/widget/custom_drawer.dart +++ b/app_petty_cash/lib/widget/custom_drawer.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; @@ -12,9 +13,12 @@ import '../provider/current_user_provider.dart'; import '../screen/login/logout_provider.dart'; class CustomDrawer extends HookConsumerWidget { + // final String userCompany; + const CustomDrawer({ - super.key, - }); + Key? key, + // required this.userCompany, + }) : super(key: key); @override Widget build(BuildContext context, WidgetRef ref) { @@ -22,6 +26,26 @@ class CustomDrawer extends HookConsumerWidget { final isLoading = useState(false); final errorMessage = useState(""); final successMessage = useState(""); + final M_CompanyName = useState("-"); + + Future getCompanyName() async { + final shared = await SharedPreferences.getInstance(); + String M_CompanyName = "-"; + + if (shared != null) { + final bearerString = shared.get(Constant.bearerName).toString(); + final xmodel = jsonDecode(bearerString); + if (xmodel != null) { + M_CompanyName = xmodel["model"]["M_CompanyName"]; + } + } + + if (M_CompanyName == "0") { + // throw BaseRepositoryException(message: 'Invalid Company ID'); + } + + return M_CompanyName; + } useEffect(() { WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { @@ -34,6 +58,7 @@ class CustomDrawer extends HookConsumerWidget { // Navigator.popAndPushNamed(context, loginRoute); return; } + M_CompanyName.value = await getCompanyName(); }); return () {}; }, []); @@ -69,175 +94,229 @@ class CustomDrawer extends HookConsumerWidget { final currentMenu = ref.read(currentPageProvider); return Drawer( - child: ListView( - // padding: EdgeInsets.only( - // top: Constant.getActualYPhone(context: context, y: 10), - // ), - children: [ - DrawerHeader( - // decoration: BoxDecoration( - // color: Colors.blue, - // ), - child: - Image(image: AssetImage('images/logo_sismedika_landscape.png')), - ), - ListTile( - leading: Icon( - Icons.home, - color: (currentMenu == 0) - ? Constant.pcBtnBackgroundColor - : Constant.textGreyv2, + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(0)) + ), + + child: Container( + child: ListView( + // padding: EdgeInsets.only( + // top: Constant.getActualYPhone(context: context, y: 10), + // ), + children: [ + Container( + + // decoration: BoxDecoration( + // border: Border(bottom: BorderSide(color: Colors.transparent)) // <--- use the global theme to change the dividerColor property + // ), + child: + Image(image: AssetImage('images/logo_sismedika_landscape.png')), ), - title: Text( - 'Home', - style: TextStyle( + + SizedBox( + height: Constant.getActualYPhone(context: context, y: 8), + ), + + Padding( + padding: EdgeInsets.only( + top: Constant.getActualYPhone(context: context, y: 10), + bottom: Constant.getActualYPhone(context: context, y: 10), + right: Constant.getActualXPhone(context: context, x: 24), + left: Constant.getActualXPhone(context: context, x: 24), + ), + child: Container( + width: Constant.getActualXPhone(context: context, x: 300), + ), + ), + + Expanded( + child: Padding( + padding: EdgeInsets.only( + left: Constant.getActualXPhone(context: context, x: 24), + right: Constant.getActualXPhone(context: context, x: 71), + ), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6), + color: Constant.textGrey.withOpacity(0.16), + ), + child: Padding( + padding: EdgeInsets.only( + left: Constant.getActualXPhone(context: context, x: 8), + right: Constant.getActualXPhone(context: context, x: 8), + ), + child: Text( + M_CompanyName.value, + style: Constant.body3(context: context).copyWith( + fontWeight: FontWeight.w700, + color: Constant.textGreyv2, + backgroundColor: Constant.textGrey.withOpacity(0.16), + ), + ), + ), + ), + ), + ), + + ListTile( + leading: Icon( + Icons.home, color: (currentMenu == 0) ? Constant.pcBtnBackgroundColor : Constant.textGreyv2, ), + title: Text( + 'Home', + style: TextStyle( + color: (currentMenu == 0) + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, + ), + ), + // tileColor: (currentMenu == 0) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + onTap: () { + // Handle navigation to Home screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 0); + Navigator.pushNamed(context, homeRoute); + }, ), - // tileColor: (currentMenu == 0) - // ? Constant.pcBtnBackgroundColor - // : Colors.transparent, - onTap: () { - // Handle navigation to Home screen - Navigator.pop(context); - ref.read(currentPageProvider.state).update((state) => 0); - Navigator.pushNamed(context, homeRoute); - }, - ), - ListTile( - leading: Icon( - Icons.money, - color: (currentMenu == 1) - ? Constant.pcBtnBackgroundColor - : Constant.textGreyv2, - ), - title: Text( - 'Transaksi', - style: TextStyle( + ListTile( + leading: Icon( + Icons.money, color: (currentMenu == 1) ? Constant.pcBtnBackgroundColor : Constant.textGreyv2, ), + title: Text( + 'Transaksi', + style: TextStyle( + color: (currentMenu == 1) + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, + ), + ), + // tileColor: (currentMenu == 1) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + onTap: () { + // Handle navigation to Transaksi screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 1); + Navigator.pushNamed(context, transaksiRoute); + }, ), - // tileColor: (currentMenu == 1) - // ? Constant.pcBtnBackgroundColor - // : Colors.transparent, - onTap: () { - // Handle navigation to Transaksi screen - Navigator.pop(context); - ref.read(currentPageProvider.state).update((state) => 1); - Navigator.pushNamed(context, transaksiRoute); - }, - ), - ListTile( - leading: Icon( - Icons.history, - color: (currentMenu == 2) - ? Constant.pcBtnBackgroundColor - : Constant.textGreyv2, - ), - title: Text( - 'History Transaksi', - style: TextStyle( + ListTile( + leading: Icon( + Icons.history, color: (currentMenu == 2) ? Constant.pcBtnBackgroundColor : Constant.textGreyv2, ), + title: Text( + 'History Transaksi', + style: TextStyle( + color: (currentMenu == 2) + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, + ), + ), + // tileColor: (currentMenu == 2) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + onTap: () { + // Handle navigation to User screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 2); + Navigator.pushNamed(context, historyTransaksiRoute); + }, ), - // tileColor: (currentMenu == 2) - // ? Constant.pcBtnBackgroundColor - // : Colors.transparent, - onTap: () { - // Handle navigation to User screen - Navigator.pop(context); - ref.read(currentPageProvider.state).update((state) => 2); - Navigator.pushNamed(context, historyTransaksiRoute); - }, - ), - ListTile( - leading: Icon( - Icons.feed, - color: (currentMenu == 3) - ? Constant.pcBtnBackgroundColor - : Constant.textGreyv2, - ), - title: Text( - 'Report', - style: TextStyle( + ListTile( + leading: Icon( + Icons.feed, color: (currentMenu == 3) ? Constant.pcBtnBackgroundColor : Constant.textGreyv2, ), + title: Text( + 'Report', + style: TextStyle( + color: (currentMenu == 3) + ? Constant.pcBtnBackgroundColor + : Constant.textGreyv2, + ), + ), + // tileColor: (currentMenu == 3) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + onTap: () { + // Handle navigation to Transaksi screen + Navigator.pop(context); + ref.read(currentPageProvider.state).update((state) => 3); + Navigator.pushNamed(context, reportRoute); + }, ), - // tileColor: (currentMenu == 3) - // ? Constant.pcBtnBackgroundColor - // : Colors.transparent, - onTap: () { - // Handle navigation to Transaksi screen - Navigator.pop(context); - ref.read(currentPageProvider.state).update((state) => 3); - Navigator.pushNamed(context, reportRoute); - }, - ), - // ListTile( - // title: Text( - // 'User', - // style: TextStyle( - // color: (currentMenu == 4) - // ? Constant.textWhite - // : Constant.textBlack, - // ), - // ), - // tileColor: (currentMenu == 4) - // ? Constant.pcBtnBackgroundColor - // : Colors.transparent, - // onTap: () { - // // Handle navigation to User screen - // Navigator.pop(context); - // ref.read(currentPageProvider.state).update((state) => 4); - // Navigator.pushNamed(context, userRoute); - // }, - // ), - // ListTile( - // title: Text( - // 'Change Company', - // style: TextStyle( - // color: (currentMenu == 5) - // ? Constant.textWhite - // : Constant.textBlack, - // ), - // ), - // tileColor: (currentMenu == 5) - // ? Constant.pcBtnBackgroundColor - // : Colors.transparent, - // onTap: () { - // // Handle navigation to User screen - // Navigator.pop(context); - // ref.read(currentPageProvider.state).update((state) => 5); - // Navigator.pushNamed(context, changeCompanyRoute); - // }, - // ), - ListTile( - leading: Icon( - Icons.logout, - color: Constant.textGreyv2, + // ListTile( + // title: Text( + // 'User', + // style: TextStyle( + // color: (currentMenu == 4) + // ? Constant.textWhite + // : Constant.textBlack, + // ), + // ), + // tileColor: (currentMenu == 4) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + // onTap: () { + // // Handle navigation to User screen + // Navigator.pop(context); + // ref.read(currentPageProvider.state).update((state) => 4); + // Navigator.pushNamed(context, userRoute); + // }, + // ), + // ListTile( + // title: Text( + // 'Change Company', + // style: TextStyle( + // color: (currentMenu == 5) + // ? Constant.textWhite + // : Constant.textBlack, + // ), + // ), + // tileColor: (currentMenu == 5) + // ? Constant.pcBtnBackgroundColor + // : Colors.transparent, + // onTap: () { + // // Handle navigation to User screen + // Navigator.pop(context); + // ref.read(currentPageProvider.state).update((state) => 5); + // Navigator.pushNamed(context, changeCompanyRoute); + // }, + // ), + ListTile( + leading: Icon( + Icons.logout, + color: Constant.textGreyv2, + ), + title: Text( + 'Logout', + style: TextStyle(color: Constant.textGreyv2), + ), + onTap: () { + // di set ke 0 lagi + ref.read(currentPageProvider.state).update((state) => 0); + ref.read(logoutProvider.notifier).logout( + M_UserID: selectedUser?.model.M_UserID ?? "", + M_UserUsername: selectedUser?.model.M_UserUsername ?? "", + ); + }, ), - title: Text( - 'Logout', - style: TextStyle(color: Constant.textGreyv2), - ), - onTap: () { - // di set ke 0 lagi - ref.read(currentPageProvider.state).update((state) => 0); - ref.read(logoutProvider.notifier).logout( - M_UserID: selectedUser?.model.M_UserID ?? "", - M_UserUsername: selectedUser?.model.M_UserUsername ?? "", - ); - }, - ), - ], + ], + ), ), ); }