From 18be7f4d38d0ac847bfcfa430b2045cac2e2c573 Mon Sep 17 00:00:00 2001 From: "mr.mojtaba" Date: Sun, 5 Oct 2025 10:13:33 +0330 Subject: [PATCH] fix: profile ui fix --- .../pages/common/profile/view.dart | 197 +++++++++++------- 1 file changed, 116 insertions(+), 81 deletions(-) diff --git a/packages/chicken/lib/presentation/pages/common/profile/view.dart b/packages/chicken/lib/presentation/pages/common/profile/view.dart index 0409f74..477ac25 100644 --- a/packages/chicken/lib/presentation/pages/common/profile/view.dart +++ b/packages/chicken/lib/presentation/pages/common/profile/view.dart @@ -72,13 +72,7 @@ class ProfilePage extends GetView { spacing: 16, children: [ rolesWidget(), - - Expanded( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 10), - child: userProfileInformation(), - ), - ), + SizedBox(height: 320.h, child: userProfileInformation()), Center( child: Wrap( @@ -89,6 +83,8 @@ class ProfilePage extends GetView { cardActionWidget( title: 'تغییر رمز عبور', selected: true, + cardColor:AppColor.blueLightActive, + cardIconColor: AppColor.blueNormal, onPressed: () { Get.bottomSheet(changePasswordBottomSheet(), isScrollControlled: true); }, @@ -97,8 +93,8 @@ class ProfilePage extends GetView { cardActionWidget( title: 'خروج', selected: true, - color: ColorFilter.mode(Colors.redAccent, BlendMode.srcIn), - cardColor: Color(0xFFEFEFEF), + cardColor: Color(0xFFF6BDBD), + cardIconColor: Color(0xFFEB5757), textColor: AppColor.redDarkerText, onPressed: () { Get.bottomSheet(exitBottomSheet(), isScrollControlled: true); @@ -138,66 +134,105 @@ class ProfilePage extends GetView { return ErrorWidget('خطا در دریافت اطلاعات کاربر'); } else if (data.value.status == ResourceStatus.success) { UserProfile item = data.value.data!; - return Column( - spacing: 6, + return Stack( + clipBehavior: Clip.none, children: [ - buildRowOnTapped( - onTap: () { - Get.bottomSheet( - userInformationBottomSheet(), - isScrollControlled: true, - ignoreSafeArea: false, - ); - }, - titleWidget: Column( - spacing: 3, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'اطلاعات هویتی', - style: AppFonts.yekan16Bold.copyWith(color: AppColor.blueNormal), - ), - Container(width: 37.w, height: 1.h, color: AppColor.greenNormal), - ], - ), - valueWidget: Assets.vec.editSvg.svg( - width: 24.w, - height: 24.h, - colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn), + Positioned.fill( + child: Container( + margin: const EdgeInsets.symmetric(horizontal: 8, vertical: 10), + padding: EdgeInsets.symmetric(horizontal: 11.h, vertical: 8.h), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8), + border: Border.all(width: 0.5, color: AppColor.darkGreyLight), + ), + child: Column( + spacing: 6, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + GestureDetector( + onTap: () { + Get.bottomSheet( + userInformationBottomSheet(), + isScrollControlled: true, + ignoreSafeArea: false, + ); + }, + child: Assets.vec.editSvg.svg( + width: 24.w, + height: 24.h, + colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn), + ), + ), + ], + ), + + Padding( + padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 8.0), + child: Column( + children: [ + itemList( + title: 'نام و نام خانوادگی', + content: item.fullname ?? 'نامشخص', + icon: Assets.vec.userSvg.path, + hasColoredBox: true, + ), + itemList( + title: 'موبایل', + content: item.mobile ?? 'نامشخص', + icon: Assets.vec.callSvg.path, + ), + itemList( + title: 'کدملی', + content: item.nationalId ?? 'نامشخص', + icon: Assets.vec.tagUserSvg.path, + ), + itemList( + title: 'شماره شناسنامه', + content: item.nationalCode ?? 'نامشخص', + icon: Assets.vec.userSquareSvg.path, + ), + itemList( + title: 'تاریخ تولد', + content: item.birthday?.toJalali.formatCompactDate() ?? 'نامشخص', + icon: Assets.vec.calendarSvg.path, + ), + itemList( + title: 'استان', + content: item.province ?? 'نامشخص', + icon: Assets.vec.pictureFrameSvg.path, + ), + itemList( + title: 'شهر', + content: item.city ?? 'نامشخص', + icon: Assets.vec.mapSvg.path, + ), + ], + ), + ), + ], + ), ), ), - itemList( - title: 'نام و نام خانوادگی', - content: item.fullname ?? 'نامشخص', - icon: Assets.vec.userSvg.path, - hasColoredBox: true, + + Positioned( + right: 16, + top: -7, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8), + border: Border.all(width: 0.5, color: Color(0xFFA9A9A9)), + ), + child: Text( + 'اطلاعات هویتی', + style: AppFonts.yekan16.copyWith(color: AppColor.iconColor), + ), + ), ), - itemList( - title: 'موبایل', - content: item.mobile ?? 'نامشخص', - icon: Assets.vec.callSvg.path, - ), - itemList( - title: 'کدملی', - content: item.nationalId ?? 'نامشخص', - icon: Assets.vec.tagUserSvg.path, - ), - itemList( - title: 'شماره شناسنامه', - content: item.nationalCode ?? 'نامشخص', - icon: Assets.vec.userSquareSvg.path, - ), - itemList( - title: 'تاریخ تولد', - content: item.birthday?.toJalali.formatCompactDate() ?? 'نامشخص', - icon: Assets.vec.calendarSvg.path, - ), - itemList( - title: 'استان', - content: item.province ?? 'نامشخص', - icon: Assets.vec.pictureFrameSvg.path, - ), - itemList(title: 'شهر', content: item.city ?? 'نامشخص', icon: Assets.vec.mapSvg.path), ], ); } else { @@ -246,6 +281,7 @@ class ProfilePage extends GetView { bool selected = false, ColorFilter? color, Color? cardColor, + Color? cardIconColor, Color? textColor, }) { return GestureDetector( @@ -254,22 +290,24 @@ class ProfilePage extends GetView { spacing: 4, children: [ Container( - width: 52, - height: 52, - padding: EdgeInsets.all(8), + width: 52.w, + height: 52.h, + padding: EdgeInsets.all(6), decoration: ShapeDecoration( color: cardColor ?? AppColor.blueLight, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), ), - child: SvgGenImage.vec(icon).svg( - width: 40, - height: 40, - colorFilter: - color ?? - ColorFilter.mode( - selected ? AppColor.blueNormal : AppColor.whiteLight, - BlendMode.srcIn, - ), + child: Container( + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color:cardIconColor, + borderRadius: BorderRadius.circular(8), + ), + child: SvgGenImage.vec(icon).svg( + width: 40.w, + height: 40.h, + colorFilter: color ?? ColorFilter.mode(Colors.white, BlendMode.srcIn), + ), ), ), SizedBox(height: 2), @@ -460,7 +498,6 @@ class ProfilePage extends GetView { ); } - Widget changePasswordBottomSheet() { return BaseBottomSheet( height: 400.h, @@ -631,13 +668,11 @@ class ProfilePage extends GetView { children: List.generate(item?.length ?? 0, (index) { Map tmpRole = getFaUserRoleWithOnTap(item?[index]); return CustomChip( - isSelected: - controller.gService.getRoute(Module.chicken) == tmpRole.values.first, + isSelected: controller.gService.getRoute(Module.chicken) == tmpRole.values.first, title: tmpRole.keys.first, index: index, onTap: (int p1) { controller.changeUserRole(tmpRole.values.first); - }, ); }),