From 288a0018ce424ec726c9fa73070287c1c80a2317 Mon Sep 17 00:00:00 2001 From: aamir-csol Date: Mon, 29 Sep 2025 09:46:45 +0300 Subject: [PATCH] family screen & widgets --- assets/images/png/dummy_user.png | Bin 0 -> 73018 bytes lib/core/api_consts.dart | 1 + lib/core/app_assets.dart | 1 + lib/core/enums.dart | 53 ++++ .../authentication/authentication_repo.dart | 42 ++-- .../medical_file/medical_file_repo.dart | 11 +- .../medical_file/medical_file_view_model.dart | 226 +++++++++++++----- .../medical_file/medical_file_page.dart | 5 +- lib/presentation/my_family/my_Family.dart | 34 ++- .../my_family/widget/family_cards.dart | 28 ++- 10 files changed, 298 insertions(+), 103 deletions(-) create mode 100644 assets/images/png/dummy_user.png diff --git a/assets/images/png/dummy_user.png b/assets/images/png/dummy_user.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bace408fe0553e11eccc275651b680afa66675 GIT binary patch literal 73018 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 literal 0 HcmV?d00001 diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index e11de15..206809d 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -811,6 +811,7 @@ class ApiConsts { static final String sendFamilyFileActivation = 'Services/Authentication.svc/REST/SendActivationCodeForFamilyFile'; static final String checkActivationCodeForFamily = 'Services/Authentication.svc/REST/CheckActivationCodeForFamilyFile'; static final String getAllPendingRecordsByResponseId = 'Services/Authentication.svc/REST/GetAllPendingRecordsByResponseId'; + static final String getAllSharedRecordsByStatus = 'Services/Authentication.svc/REST/GetAllSharedRecordsByStatus'; // static values for Api diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index 83fb842..be651b7 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -158,6 +158,7 @@ class AppAssets { static const String tamara_en = '$pngBasePath/tamara_en.png'; static const String visa = '$pngBasePath/visa.png'; static const String lockIcon = '$pngBasePath/lock-icon.png'; + static const String dummy_user = '$pngBasePath/dummy_user.png'; } class AppAnimations { diff --git a/lib/core/enums.dart b/lib/core/enums.dart index bb6c6fe..e94b3e2 100644 --- a/lib/core/enums.dart +++ b/lib/core/enums.dart @@ -30,6 +30,8 @@ enum LoginTypeEnum { sms, whatsapp, face, fingerprint } enum AppEnvironmentTypeEnum { dev, uat, preProd, qa, staging, prod } +enum FamilyFileEnum { active, inactive, blocked, deleted, pending } + extension CalenderExtension on CalenderEnum { int get toInt { switch (this) { @@ -138,6 +140,57 @@ extension OTPTypeEnumExtension on OTPTypeEnum { } } +extension FamilyFileEnumExtenshion on FamilyFileEnum { + int get toInt { + switch (this) { + case FamilyFileEnum.active: + return 3; + case FamilyFileEnum.blocked: + return 1; + case FamilyFileEnum.deleted: + return 0; + case FamilyFileEnum.pending: + return 2; + case FamilyFileEnum.inactive: + return 4; + } + } + + String get displayName { + AppState appState = getIt.get(); + bool isArabic = appState.getLanguageID() == 1 ? true : false; + switch (this) { + case FamilyFileEnum.active: + return isArabic ? 'نشط' : 'Active'; + case FamilyFileEnum.inactive: + return isArabic ? 'غير نشط' : 'Inactive'; + case FamilyFileEnum.blocked: + return isArabic ? 'محظور' : 'Blocked'; + case FamilyFileEnum.deleted: + return isArabic ? 'محذوف' : 'Deleted'; + case FamilyFileEnum.pending: + return isArabic ? 'قيد الانتظار' : 'Pending'; + } + } + + static FamilyFileEnum? fromValue(int value) { + switch (value) { + case 0: + return FamilyFileEnum.pending; + case 2: + return FamilyFileEnum.blocked; + case 1: + return FamilyFileEnum.deleted; + case 3: + return FamilyFileEnum.active; + case 4: + return FamilyFileEnum.inactive; + default: + return null; + } + } +} + enum ServiceTypeEnum { advancePayment, //3 ancillaryOrder, //3 diff --git a/lib/features/authentication/authentication_repo.dart b/lib/features/authentication/authentication_repo.dart index 8d1af92..9244e4a 100644 --- a/lib/features/authentication/authentication_repo.dart +++ b/lib/features/authentication/authentication_repo.dart @@ -30,8 +30,7 @@ abstract class AuthenticationRepo { int? responseID, bool isSwitchUser = false, int? patientID, - int? loginType - }); + int? loginType}); Future>> checkIfUserAgreed({required dynamic commonAuthanticatedRequest}); @@ -196,17 +195,16 @@ class AuthenticationRepoImp implements AuthenticationRepo { } @override - Future>> checkActivationCodeRepo({ - required dynamic newRequest, // could be CheckActivationCodeReq or CheckActivationCodeRegisterReq - required String? activationCode, - required bool isRegister, - bool isFormFamilyFile = false, - int? patientShareRequestID, - int? responseID, - bool isSwitchUser = false, - int? patientID, - int? loginType - }) async { + Future>> checkActivationCodeRepo( + {required dynamic newRequest, // could be CheckActivationCodeReq or CheckActivationCodeRegisterReq + required String? activationCode, + required bool isRegister, + bool isFormFamilyFile = false, + int? patientShareRequestID, + int? responseID, + bool isSwitchUser = false, + int? patientID, + int? loginType}) async { if (isRegister) { newRequest["activationCode"] = activationCode ?? "0000"; newRequest["isSilentLogin"] = activationCode != null ? false : true; @@ -227,7 +225,9 @@ class AuthenticationRepoImp implements AuthenticationRepo { familyRequest['Status'] = 3; familyRequest["PatientID"] = appState.getAuthenticatedUser()!.patientId ?? 0; familyRequest["LogInTokenID"] = appState.getFamilyFileTokenID; - + familyRequest["activationCode"] = activationCode ?? "0000"; + familyRequest["PatientMobileNumber"] = newRequest.patientMobileNumber; + familyRequest["PatientIdentificationID"] = newRequest.patientIdentificationID; } Map switchRequest = {}; if (isSwitchUser) { @@ -237,14 +237,12 @@ class AuthenticationRepoImp implements AuthenticationRepo { switchRequest['IsSilentLogin'] = true; switchRequest['LogInTokenID'] = null; switchRequest['SearchType'] = 2; - if(loginType != 0) { - switchRequest['SuperUser'] = patientID; - switchRequest['DeviceToken'] = null; - }else{ - switchRequest['LoginType'] = 2; - } - - + if (loginType != 0) { + switchRequest['SuperUser'] = patientID; + switchRequest['DeviceToken'] = null; + } else { + switchRequest['LoginType'] = 2; + } } final endpoint = isFormFamilyFile diff --git a/lib/features/medical_file/medical_file_repo.dart b/lib/features/medical_file/medical_file_repo.dart index b90e7fb..9c18696 100644 --- a/lib/features/medical_file/medical_file_repo.dart +++ b/lib/features/medical_file/medical_file_repo.dart @@ -24,7 +24,7 @@ abstract class MedicalFileRepo { Future>> getPatientMedicalReportPDF(PatientMedicalReportResponseModel patientMedicalReportResponseModel, AuthenticatedUser authenticatedUser); - Future>>> getPatientFamilyFiles(int status, int patientId); + Future>>> getPatientFamilyFiles(int? status, int patientId); Future>>> getAllPendingRecordsByResponseId({required Map request}); @@ -276,13 +276,13 @@ class MedicalFileRepoImp implements MedicalFileRepo { } @override - Future>>> getPatientFamilyFiles(int status, int patientID) async { + Future>>> getPatientFamilyFiles(int? status, int patientID) async { try { GenericApiModel>? apiResponse; Failure? failure; await apiClient.post( - FAMILY_FILES, - body: {"Status": status, "PatientID":patientID}, + ApiConsts.getAllSharedRecordsByStatus, + body: {if (status != null) "Status": status, "PatientID": patientID}, onFailure: (error, statusCode, {messageStatus, failureType}) { failure = failureType; }, @@ -327,7 +327,7 @@ class MedicalFileRepoImp implements MedicalFileRepo { }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { - final list = response['GetAllSharedRecordsByStatusList']; + final list = response['GetAllPendingRecordsList']; // if (list == null || list.isEmpty) { // throw Exception("lab list is empty"); // } @@ -366,7 +366,6 @@ class MedicalFileRepoImp implements MedicalFileRepo { }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { - apiResponse = GenericApiModel( messageStatus: messageStatus, statusCode: statusCode, diff --git a/lib/features/medical_file/medical_file_view_model.dart b/lib/features/medical_file/medical_file_view_model.dart index 746e592..153828c 100644 --- a/lib/features/medical_file/medical_file_view_model.dart +++ b/lib/features/medical_file/medical_file_view_model.dart @@ -39,14 +39,27 @@ class MedicalFileViewModel extends ChangeNotifier { List patientMedicalReportCancelledList = []; List patientFamilyFiles = []; + List pendingFamilyFiles = []; String patientSickLeavePDFBase64 = ""; String patientMedicalReportPDFBase64 = ""; int selectedMedicalReportsTabIndex = 0; + int _selectedFamilyFileTabIndex = 0; + + int get getSelectedFamilyFileTabIndex => _selectedFamilyFileTabIndex; + + set setSelectedFamilyFileTabIndex(int value) { + if (_selectedFamilyFileTabIndex != value) { + _selectedFamilyFileTabIndex = value; + notifyListeners(); + } + } + static final DialogService _dialogService = getIt.get(); - AppState _appState = getIt(); + final AppState _appState = getIt(); AuthenticationViewModel authVM = getIt.get(); + MedicalFileViewModel({required this.medicalFileRepo, required this.errorHandlerService}); initMedicalFileProvider() { @@ -67,6 +80,14 @@ class MedicalFileViewModel extends ChangeNotifier { notifyListeners(); } + void onFamilyFileTabChange(int index) { + setSelectedFamilyFileTabIndex = index; + if (index == 1) { + getAllPendingRecordsByResponseId(); + } + notifyListeners(); + } + setIsPatientVaccineListLoading(bool isLoading) { isPatientVaccineListLoading = isLoading; notifyListeners(); @@ -235,8 +256,8 @@ class MedicalFileViewModel extends ChangeNotifier { ); } - Future getFamilyFiles({Function(dynamic)? onSuccess, Function(String)? onError}) async { - final result = await medicalFileRepo.getPatientFamilyFiles(); + Future getFamilyFiles({int? status, Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await medicalFileRepo.getPatientFamilyFiles(status, _appState.superUserID != null ? _appState.superUserID! : _appState.getAuthenticatedUser()!.patientId!); result.fold( (failure) async => await errorHandlerService.handleError( @@ -250,15 +271,80 @@ class MedicalFileViewModel extends ChangeNotifier { _dialogService.showErrorBottomSheet(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { patientFamilyFiles = apiResponse.data!; - patientFamilyFiles.insert( - 0, - FamilyFileResponseModelLists( + if (apiResponse.data != null) { + patientFamilyFiles.insert( + 0, + FamilyFileResponseModelLists( patientId: _appState.getAuthenticatedUser()!.patientId, patientName: '${_appState.getAuthenticatedUser()!.firstName!} ${_appState.getAuthenticatedUser()!.lastName!}', isActive: true, gender: _appState.getAuthenticatedUser()!.gender!, - responseId: _appState.getAuthenticatedUser()!.patientId), - ); + responseId: _appState.getAuthenticatedUser()!.patientId, + age: _appState.getAuthenticatedUser()!.age, + mobileNumber: _appState.getAuthenticatedUser()!.mobileNumber, + patientIdenficationNumber: _appState.getAuthenticatedUser()!.patientIdentificationNo, + emaiLAddress: _appState.getAuthenticatedUser()!.emailAddress, + genderDescription: _appState.getAuthenticatedUser()!.genderDescription, + ), + ); + + final List activeFamilyFiles = []; + final List tempPendingFamilyFiles = []; + for (var element in apiResponse.data!) { + if (element.status != null && element.status == FamilyFileEnum.active.toInt) { + activeFamilyFiles.add(FamilyFileResponseModelLists( + patientId: element.patientId, + patientName: element.patientName!, + isActive: element.status == FamilyFileEnum.active.toInt ? true : false, + gender: element.gender!, + responseId: element.patientId, + mobileNumber: element.mobileNumber, + age: element.age, + patientIdenficationNumber: element.patientIdenficationNumber, + relationship: element.relationship, + relationshipId: element.relationshipId, + relationshipN: element.relationshipN, + status: element.status, + statusDescription: element.statusDescription, + createdOn: element.createdOn, + editedOn: element.editedOn, + patientDataVerified: element.patientDataVerified, + regionId: element.regionId, + familyRegionId: element.familyRegionId, + genderDescription: element.genderDescription, + genderImage: element.genderImage, + emaiLAddress: element.emaiLAddress)); + } + + if (element.status != null && element.status == FamilyFileEnum.pending.toInt) { + tempPendingFamilyFiles.add(FamilyFileResponseModelLists( + patientId: element.patientId, + patientName: element.patientName!, + isActive: element.status == FamilyFileEnum.active.toInt ? true : false, + gender: element.gender!, + responseId: element.patientId, + mobileNumber: element.mobileNumber, + age: element.age, + patientIdenficationNumber: element.patientIdenficationNumber, + relationship: element.relationship, + relationshipId: element.relationshipId, + relationshipN: element.relationshipN, + status: element.status, + statusDescription: element.statusDescription, + createdOn: element.createdOn, + editedOn: element.editedOn, + patientDataVerified: element.patientDataVerified, + regionId: element.regionId, + familyRegionId: element.familyRegionId, + genderDescription: element.genderDescription, + genderImage: element.genderImage, + emaiLAddress: element.emaiLAddress)); + } + } + patientFamilyFiles.addAll(activeFamilyFiles.where((element) => !patientFamilyFiles.any((e) => e.patientId == element.patientId))); + pendingFamilyFiles.addAll(tempPendingFamilyFiles); + } + notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); @@ -278,61 +364,93 @@ class MedicalFileViewModel extends ChangeNotifier { if (apiResponse.messageStatus == 2) { _dialogService.showErrorBottomSheet(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { - print("======= Pending Records Response: ${jsonEncode(apiResponse.data)}"); + if (apiResponse.data != null) { + final List tempPendingFamilyFiles = []; + for (var element in apiResponse.data!) { + if (element.status != null && element.status == FamilyFileEnum.pending.toInt) { + tempPendingFamilyFiles.add(FamilyFileResponseModelLists( + patientId: element.patientId, + patientName: element.patientName!, + isActive: element.status == FamilyFileEnum.active.toInt ? true : false, + gender: element.gender, + responseId: element.patientId, + mobileNumber: element.mobileNumber, + age: element.age, + patientIdenficationNumber: element.patientIdenficationNumber, + relationship: element.relationship, + relationshipId: element.relationshipId, + relationshipN: element.relationshipN, + status: element.status, + statusDescription: element.statusDescription, + createdOn: element.createdOn, + editedOn: element.editedOn, + patientDataVerified: element.patientDataVerified, + regionId: element.regionId, + familyRegionId: element.familyRegionId, + genderDescription: element.genderDescription, + genderImage: element.genderImage, + emaiLAddress: element.emaiLAddress)); + } + } + pendingFamilyFiles.addAll(tempPendingFamilyFiles.where((element) => !pendingFamilyFiles.any((e) => e.patientId == element.patientId))); + } + notifyListeners(); } }, ); } - Future switchFamilyFiles({Function(dynamic)? onSuccess, Function(String)? onError}) async { - // final result = await medicalFileRepo.getPatientFamilyFiles(); - final result = await medicalFileRepo.getPatientFamilyFiles(3,_appState.superUserID !=null ? _appState.superUserID! : _appState.getAuthenticatedUser()!.patientId!); - - result.fold( - (failure) async => await errorHandlerService.handleError( - failure: failure, - onOkPressed: () { - onError!(failure.message); - }, - ), - (apiResponse) { - if (apiResponse.messageStatus == 2) { - _dialogService.showErrorBottomSheet(message: apiResponse.errorMessage!, onOkPressed: () {}); - } else if (apiResponse.messageStatus == 1) { - patientFamilyFiles = apiResponse.data!; - patientFamilyFiles.insert( - 0, - FamilyFileResponseModelLists( - patientId: _appState.getAuthenticatedUser()!.patientId, - patientName: '${_appState.getAuthenticatedUser()!.firstName!} ${_appState.getAuthenticatedUser()!.lastName!}', - isActive: true, - gender: _appState.getAuthenticatedUser()!.gender!, - age: _appState.getAuthenticatedUser()!.age, - mobileNumber: _appState.getAuthenticatedUser()!.mobileNumber, - responseId: _appState.getAuthenticatedUser()!.patientId), - ); - notifyListeners(); - if (onSuccess != null) { - onSuccess(apiResponse); - } - } - }, + // Future switchFamilyFiles({Function(dynamic)? onSuccess, Function(String)? onError}) async { + // // final result = await medicalFileRepo.getPatientFamilyFiles(); + // final result = await medicalFileRepo.getPatientFamilyFiles(3, _appState.superUserID != null ? _appState.superUserID! : _appState.getAuthenticatedUser()!.patientId!); + // + // result.fold( + // (failure) async => await errorHandlerService.handleError( + // failure: failure, + // onOkPressed: () { + // onError!(failure.message); + // }, + // ), + // (apiResponse) { + // if (apiResponse.messageStatus == 2) { + // _dialogService.showErrorBottomSheet(message: apiResponse.errorMessage!, onOkPressed: () {}); + // } else if (apiResponse.messageStatus == 1) { + // patientFamilyFiles = apiResponse.data!; + // patientFamilyFiles.insert( + // 0, + // FamilyFileResponseModelLists( + // patientId: _appState.getAuthenticatedUser()!.patientId, + // patientName: '${_appState.getAuthenticatedUser()!.firstName!} ${_appState.getAuthenticatedUser()!.lastName!}', + // isActive: true, + // gender: _appState.getAuthenticatedUser()!.gender!, + // age: _appState.getAuthenticatedUser()!.age, + // mobileNumber: _appState.getAuthenticatedUser()!.mobileNumber, + // responseId: _appState.getAuthenticatedUser()!.patientId), + // ); + // notifyListeners(); + // if (onSuccess != null) { + // onSuccess(apiResponse); + // } + // } + // }, + // ); + // } + + Future switchFamilyFiles({Function(dynamic)? onSuccess, int? responseID, int? patientID, String? phoneNumber, Function(String)? onError}) async { + authVM.phoneNumberController.text = phoneNumber!.startsWith("0") ? phoneNumber.replaceFirst("0", "") : phoneNumber; + + await authVM.checkActivationCode( + activationCode: '0000', + otpTypeEnum: OTPTypeEnum.sms, + onWrongActivationCode: (String? str) {}, + responseID: responseID, + isFormFamilyFile: false, + isSwitchUser: true, + patientID: patientID, ); } - Future switchFamilyFiles( {Function(dynamic)? onSuccess,int? responseID,int? patientID, String? phoneNumber, Function(String)? onError}) async { - authVM.phoneNumberController.text =phoneNumber!.startsWith("0") - ? phoneNumber.replaceFirst("0", "") - : phoneNumber; - - - - await authVM.checkActivationCode(activationCode: '0000', otpTypeEnum: OTPTypeEnum.sms, onWrongActivationCode: (String? str) {}, responseID: responseID, isFormFamilyFile:false, isSwitchUser: true, patientID: patientID, ); - - - } Future addFamilyFile({required OTPTypeEnum otpTypeEnum, required bool isExcludedUser}) async { - LoaderBottomSheet.showLoader(); AuthenticationViewModel authVM = getIt.get(); NavigationService navigationService = getIt.get(); diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index ea0b86b..afea4e6 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -78,7 +78,9 @@ class _MedicalFilePageState extends State { insuranceViewModel.initInsuranceProvider(); medicalFileViewModel.setIsPatientSickLeaveListLoading(true); medicalFileViewModel.getPatientSickLeaveList(); - medicalFileViewModel.getFamilyFiles(); + medicalFileViewModel.getFamilyFiles(); //TODO: Remove status: 1 by Aamir Need to Discuss With Sultan + medicalFileViewModel.getAllPendingRecordsByResponseId(); //TODO: Added By Aamir + medicalFileViewModel.onTabChanged(0); } }); @@ -198,7 +200,6 @@ class _MedicalFilePageState extends State { CustomTabBarModel(AppAssets.more, "More".needTranslation), ], onTabChange: (index) { - print(index); medicalFileVM.onTabChanged(index); }, ).paddingSymmetrical(24.h, 0.0), diff --git a/lib/presentation/my_family/my_Family.dart b/lib/presentation/my_family/my_Family.dart index cb49933..1944704 100644 --- a/lib/presentation/my_family/my_Family.dart +++ b/lib/presentation/my_family/my_Family.dart @@ -22,6 +22,7 @@ import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/dropdown/country_dropdown_widget.dart'; import 'package:hmg_patient_app_new/widgets/input_widget.dart'; +import 'package:provider/provider.dart'; class FamilyMedicalScreen extends StatefulWidget { final List profiles; @@ -44,7 +45,7 @@ class _FamilyMedicalScreenState extends State { @override void initState() { super.initState(); - medicalVM = getIt.get(); + medicalVM = context.read(); } @override @@ -67,13 +68,12 @@ class _FamilyMedicalScreenState extends State { SizedBox(height: 25.h), CustomTabBar( tabs: tabs, - onTabChange: (int index) {}, + onTabChange: (index) { + medicalVM!.onFamilyFileTabChange(index); + }, ), SizedBox(height: 25.h), - FamilyCards(profiles: widget.profiles, onSelect: (FamilyFileResponseModelLists profile){ - medicalVM?.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); - - }, isShowDetails: true), + Consumer(builder: (context, medicalVM, child) => getFamilyTabs(index: medicalVM.getSelectedFamilyFileTabIndex)), SizedBox(height: 20.h), ], ), @@ -96,6 +96,28 @@ class _FamilyMedicalScreenState extends State { ); } + Widget getFamilyTabs({required int index}) { + switch (index) { + case 0: + return FamilyCards( + profiles: medicalVM!.patientFamilyFiles, + onSelect: (FamilyFileResponseModelLists profile) { + medicalVM!.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); + }, + isShowDetails: true, + ); + case 1: + return FamilyCards( + profiles: medicalVM!.pendingFamilyFiles, + onSelect: (FamilyFileResponseModelLists profile) { + // medicalVM!.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); + }, + isShowDetails: true, + ); default: + return SizedBox.shrink(); + } + } + void showModelSheet() { AuthenticationViewModel authVm = getIt.get(); return showCommonBottomSheetWithoutHeight(context, diff --git a/lib/presentation/my_family/widget/family_cards.dart b/lib/presentation/my_family/widget/family_cards.dart index 480f91f..40a2d8c 100644 --- a/lib/presentation/my_family/widget/family_cards.dart +++ b/lib/presentation/my_family/widget/family_cards.dart @@ -43,20 +43,22 @@ class _FamilyCardsState extends State { ), itemBuilder: (context, index) { final profile = widget.profiles[index]; - final isActive = (profile.responseId == appState - .getAuthenticatedUser() - ?.patientId); + final isActive = (profile.responseId == appState.getAuthenticatedUser()?.patientId); return Container( padding: EdgeInsets.symmetric(vertical: 15.h, horizontal: 15.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24), child: Opacity( - opacity: isActive ? 0.4 : 1.0, // Fade all content if active + opacity: isActive || profile.status == FamilyFileEnum.pending.toInt ? 0.4 : 1.0, // Fade all content if active child: Column( mainAxisSize: MainAxisSize.min, children: [ SizedBox(height: 5.h), Utils.buildImgWithAssets( - icon: profile.gender == 1 ? ((profile.age ?? 0) < 7 ? AppAssets.babyBoyImg : AppAssets.male_img) : (profile.age! < 7 ? AppAssets.babyGirlImg : AppAssets.femaleImg), + icon: profile.gender == null + ? AppAssets.dummy_user + : profile.gender == 1 + ? ((profile.age ?? 0) < 7 ? AppAssets.babyBoyImg : AppAssets.male_img) + : (profile.age! < 7 ? AppAssets.babyGirlImg : AppAssets.femaleImg), width: 80.h, height: 78.h), SizedBox(height: 8.h), @@ -73,13 +75,13 @@ class _FamilyCardsState extends State { widget.isShowDetails ? SizedBox(height: 4.h) : SizedBox(), widget.isShowDetails ? CustomChipWidget( - chipType: ChipTypeEnum.alert, - backgroundColor: AppColors.lightGrayBGColor, - chipText: "Age: ${profile.age ?? "N/A"} Years", - isShowBorder: false, - borderRadius: 8.h, - textColor: AppColors.textColor, - ) + chipType: ChipTypeEnum.alert, + backgroundColor: AppColors.lightGrayBGColor, + chipText: "Age: ${profile.age ?? "N/A"} Years", + isShowBorder: false, + borderRadius: 8.h, + textColor: AppColors.textColor, + ) : SizedBox(), widget.isShowDetails ? SizedBox(height: 8.h) : SizedBox(), Spacer(), @@ -102,7 +104,7 @@ class _FamilyCardsState extends State { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 13.h, - icon: widget.isBottomSheet ? null : AppAssets.heart, + icon: widget.isBottomSheet ? null : AppAssets.heart, iconColor: AppColors.primaryRedColor, padding: EdgeInsets.symmetric(vertical: 0, horizontal: 0), ).paddingOnly(top: 0, bottom: 0),