family screen & widgets

pull/76/head
aamir-csol 1 month ago
parent 36193d349c
commit 288a0018ce

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

@ -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

@ -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 {

@ -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<AppState>();
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

@ -30,8 +30,7 @@ abstract class AuthenticationRepo {
int? responseID,
bool isSwitchUser = false,
int? patientID,
int? loginType
});
int? loginType});
Future<Either<Failure, GenericApiModel<dynamic>>> checkIfUserAgreed({required dynamic commonAuthanticatedRequest});
@ -196,17 +195,16 @@ class AuthenticationRepoImp implements AuthenticationRepo {
}
@override
Future<Either<Failure, GenericApiModel<dynamic>>> 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<Either<Failure, GenericApiModel<dynamic>>> 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<String, dynamic> 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

@ -24,7 +24,7 @@ abstract class MedicalFileRepo {
Future<Either<Failure, GenericApiModel<dynamic>>> getPatientMedicalReportPDF(PatientMedicalReportResponseModel patientMedicalReportResponseModel, AuthenticatedUser authenticatedUser);
Future<Either<Failure, GenericApiModel<List<FamilyFileResponseModelLists>>>> getPatientFamilyFiles(int status, int patientId);
Future<Either<Failure, GenericApiModel<List<FamilyFileResponseModelLists>>>> getPatientFamilyFiles(int? status, int patientId);
Future<Either<Failure, GenericApiModel<List<FamilyFileResponseModelLists>>>> getAllPendingRecordsByResponseId({required Map<String, dynamic> request});
@ -276,13 +276,13 @@ class MedicalFileRepoImp implements MedicalFileRepo {
}
@override
Future<Either<Failure, GenericApiModel<List<FamilyFileResponseModelLists>>>> getPatientFamilyFiles(int status, int patientID) async {
Future<Either<Failure, GenericApiModel<List<FamilyFileResponseModelLists>>>> getPatientFamilyFiles(int? status, int patientID) async {
try {
GenericApiModel<List<FamilyFileResponseModelLists>>? 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<dynamic>(
messageStatus: messageStatus,
statusCode: statusCode,

@ -39,14 +39,27 @@ class MedicalFileViewModel extends ChangeNotifier {
List<PatientMedicalReportResponseModel> patientMedicalReportCancelledList = [];
List<FamilyFileResponseModelLists> patientFamilyFiles = [];
List<FamilyFileResponseModelLists> 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<DialogService>();
AppState _appState = getIt<AppState>();
final AppState _appState = getIt<AppState>();
AuthenticationViewModel authVM = getIt.get<AuthenticationViewModel>();
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<void> getFamilyFiles({Function(dynamic)? onSuccess, Function(String)? onError}) async {
final result = await medicalFileRepo.getPatientFamilyFiles();
Future<void> 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<FamilyFileResponseModelLists> activeFamilyFiles = [];
final List<FamilyFileResponseModelLists> 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<FamilyFileResponseModelLists> 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<void> 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<void> 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<void> 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<void> 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<void> addFamilyFile({required OTPTypeEnum otpTypeEnum, required bool isExcludedUser}) async {
LoaderBottomSheet.showLoader();
AuthenticationViewModel authVM = getIt.get<AuthenticationViewModel>();
NavigationService navigationService = getIt.get<NavigationService>();

@ -78,7 +78,9 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
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<MedicalFilePage> {
CustomTabBarModel(AppAssets.more, "More".needTranslation),
],
onTabChange: (index) {
print(index);
medicalFileVM.onTabChanged(index);
},
).paddingSymmetrical(24.h, 0.0),

@ -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<FamilyFileResponseModelLists> profiles;
@ -44,7 +45,7 @@ class _FamilyMedicalScreenState extends State<FamilyMedicalScreen> {
@override
void initState() {
super.initState();
medicalVM = getIt.get<MedicalFileViewModel>();
medicalVM = context.read<MedicalFileViewModel>();
}
@override
@ -67,13 +68,12 @@ class _FamilyMedicalScreenState extends State<FamilyMedicalScreen> {
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<MedicalFileViewModel>(builder: (context, medicalVM, child) => getFamilyTabs(index: medicalVM.getSelectedFamilyFileTabIndex)),
SizedBox(height: 20.h),
],
),
@ -96,6 +96,28 @@ class _FamilyMedicalScreenState extends State<FamilyMedicalScreen> {
);
}
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<AuthenticationViewModel>();
return showCommonBottomSheetWithoutHeight(context,

@ -43,20 +43,22 @@ class _FamilyCardsState extends State<FamilyCards> {
),
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<FamilyCards> {
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<FamilyCards> {
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),

Loading…
Cancel
Save