logout & family file fix
parent
418297b6fb
commit
8b701255ed
@ -0,0 +1,5 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M9.25 8C9.25 7.58579 9.58579 7.25 10 7.25H10.0081C10.4223 7.25 10.7581 7.58579 10.7581 8C10.7581 8.41421 10.4223 8.75 10.0081 8.75H10C9.58579 8.75 9.25 8.41421 9.25 8Z" fill="white"/>
|
||||
<path d="M13.25 8C13.25 7.58579 13.5858 7.25 14 7.25H14.0081C14.4223 7.25 14.7581 7.58579 14.7581 8C14.7581 8.41421 14.4223 8.75 14.0081 8.75H14C13.5858 8.75 13.25 8.41421 13.25 8Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.0039 1.25C8.27598 1.25 5.25391 4.27208 5.25391 8C5.25391 9.38824 5.67299 10.6786 6.39155 11.7515C5.6694 12.8779 5.25 14.2322 5.25 15.6847C5.25 19.5503 8.23629 22.7505 12 22.7505C14.6194 22.7505 16.868 21.1942 17.9876 18.9496C16.4713 18.291 14.8272 17.3477 13.3318 16.1767C12.767 15.7344 12.2184 15.2558 11.7036 14.7434C11.8031 14.7478 11.9033 14.75 12.0039 14.75C12.5875 14.75 13.1538 14.6759 13.694 14.5367C13.8779 14.6931 14.0656 14.8462 14.2566 14.9957C15.6278 16.0694 17.1339 16.9362 18.5141 17.5427C18.668 16.9498 18.75 16.3267 18.75 15.6847C18.75 14.2348 18.3321 12.8827 17.6123 11.7574C18.3333 10.6834 18.7539 9.39081 18.7539 8C18.7539 4.27208 15.7318 1.25 12.0039 1.25ZM9.30582 4.0036C8.02465 4.87025 7.18248 6.33678 7.18248 8C7.18248 10.6628 9.3411 12.8214 12.0039 12.8214C14.6667 12.8214 16.8253 10.6628 16.8253 8C16.8253 5.3372 14.6667 3.17857 12.0039 3.17857C11.5521 3.17857 11.2325 3.5278 11.2325 3.90179C11.2325 4.27578 11.5521 4.625 12.0039 4.625C12.2101 4.625 12.3921 4.55043 12.528 4.43216C12.9298 4.08256 13.5389 4.12485 13.8885 4.5266C14.2381 4.92836 14.1958 5.53744 13.794 5.88704C13.3158 6.30318 12.6868 6.55357 12.0039 6.55357C10.5721 6.55357 9.36055 5.44435 9.30582 4.0036Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@ -0,0 +1,376 @@
|
||||
// import 'package:easy_localization/easy_localization.dart';
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:hmg_patient_app_new/core/app_assets.dart';
|
||||
// import 'package:hmg_patient_app_new/core/app_state.dart';
|
||||
// import 'package:hmg_patient_app_new/core/dependencies.dart';
|
||||
// import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
|
||||
// import 'package:hmg_patient_app_new/core/utils/utils.dart';
|
||||
// import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
|
||||
// import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
|
||||
// import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart';
|
||||
// import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_view_model.dart';
|
||||
// import 'package:hmg_patient_app_new/features/blood_donation/models/blood_group_hospitals_model.dart';
|
||||
// import 'package:hmg_patient_app_new/features/blood_donation/widgets/hospital_selection.dart';
|
||||
// import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
|
||||
// import 'package:hmg_patient_app_new/presentation/blood_donation/widgets/select_blood_group_widget.dart';
|
||||
// import 'package:hmg_patient_app_new/presentation/blood_donation/widgets/select_city_widget.dart';
|
||||
// import 'package:hmg_patient_app_new/presentation/blood_donation/widgets/select_gender_widget.dart';
|
||||
// import 'package:hmg_patient_app_new/presentation/book_appointment/select_clinic_page.dart';
|
||||
// import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart';
|
||||
// import 'package:hmg_patient_app_new/services/dialog_service.dart';
|
||||
// import 'package:hmg_patient_app_new/theme/colors.dart';
|
||||
// import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart';
|
||||
// import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
|
||||
// import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart';
|
||||
// import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart';
|
||||
// import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart';
|
||||
// import 'package:lottie/lottie.dart';
|
||||
// import 'package:provider/provider.dart';
|
||||
// import 'package:hmg_patient_app_new/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart';
|
||||
//
|
||||
// class MyChildVaccinePage extends StatefulWidget {
|
||||
// MyChildVaccinePage({super.key});
|
||||
//
|
||||
// @override
|
||||
// State<MyChildVaccinePage> createState() => _MyChildVaccinePageState();
|
||||
// }
|
||||
//
|
||||
// class _MyChildVaccinePageState extends State<MyChildVaccinePage> {
|
||||
// late AppState appState;
|
||||
//
|
||||
// @override
|
||||
// void initState() {
|
||||
// super.initState();
|
||||
// Future.microtask(() => getIt.get<BloodDonationViewModel>().fetchAllData());
|
||||
// }
|
||||
//
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// appState = getIt<AppState>();
|
||||
// return Scaffold(
|
||||
// backgroundColor: AppColors.bgScaffoldColor,
|
||||
// body: Consumer<BloodDonationViewModel>(builder: (context, bloodDonationVM, child) {
|
||||
// return Column(
|
||||
// children: [
|
||||
// Expanded(
|
||||
// child: CollapsingListView(
|
||||
// title: "Child Vaccines".needTranslation,
|
||||
// trailing: CustomButton(
|
||||
// icon: AppAssets.add_icon,
|
||||
// text: "Add Child",
|
||||
// onPressed: () {},
|
||||
// backgroundColor: AppColors.bgRedLightColor,
|
||||
// borderColor: AppColors.bgRedLightColor,
|
||||
// textColor: AppColors.primaryRedColor,
|
||||
// iconColor: AppColors.primaryRedColor,
|
||||
// padding: EdgeInsetsGeometry.symmetric(vertical: 0.h, horizontal: 10.h)),
|
||||
// child: Padding(
|
||||
// padding: EdgeInsets.all(24.w),
|
||||
// child: SingleChildScrollView(
|
||||
// child: Container(
|
||||
// decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false),
|
||||
// child: Padding(
|
||||
// padding: EdgeInsets.all(16.h),
|
||||
// child: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Row(
|
||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
// children: [
|
||||
// Row(
|
||||
// children: [
|
||||
// Utils.buildSvgWithAssets(icon: AppAssets.select_city_icon, width: 40.h, height: 40.h),
|
||||
// SizedBox(width: 12.w),
|
||||
// Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// LocaleKeys.city.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500),
|
||||
// (appState.isArabic()
|
||||
// ? (bloodDonationVM.selectedCity?.descriptionN ?? LocaleKeys.select.tr())
|
||||
// : bloodDonationVM.selectedCity?.description ?? LocaleKeys.select.tr(context: context))
|
||||
// .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500),
|
||||
// ],
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h),
|
||||
// ],
|
||||
// ).onPress(() async {
|
||||
// showCommonBottomSheetWithoutHeight(context,
|
||||
// title: LocaleKeys.selectCity.tr(context: context), isDismissible: true, child: SelectCityWidget(bloodDonationViewModel: bloodDonationVM), callBackFunc: () {});
|
||||
// }),
|
||||
// SizedBox(height: 16.h),
|
||||
// Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h),
|
||||
// SizedBox(height: 16.h),
|
||||
// Row(
|
||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
// children: [
|
||||
// Row(
|
||||
// children: [
|
||||
// Utils.buildSvgWithAssets(icon: AppAssets.genderInputIcon, width: 40.h, height: 40.h),
|
||||
// SizedBox(width: 12.w),
|
||||
// Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// LocaleKeys.gender.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500),
|
||||
// (appState.isArabic()
|
||||
// ? (bloodDonationVM.selectedGender?.typeAr ?? LocaleKeys.select.tr())
|
||||
// : bloodDonationVM.selectedGender?.type ?? LocaleKeys.select.tr(context: context))
|
||||
// .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500),
|
||||
// ],
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h),
|
||||
// ],
|
||||
// ).onPress(() {
|
||||
// showCommonBottomSheetWithoutHeight(context,
|
||||
// title: LocaleKeys.selectGender.tr(context: context),
|
||||
// isDismissible: true,
|
||||
// child: SelectGenderWidget(isArabic: appState.isArabic(), bloodDonationViewModel: bloodDonationVM),
|
||||
// callBackFunc: () {});
|
||||
// }),
|
||||
// SizedBox(height: 16.h),
|
||||
// Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h),
|
||||
// SizedBox(height: 16.h),
|
||||
// Row(
|
||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
// children: [
|
||||
// Row(
|
||||
// children: [
|
||||
// Utils.buildSvgWithAssets(icon: AppAssets.bloodType, width: 40.h, height: 40.h),
|
||||
// SizedBox(width: 12.w),
|
||||
// Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// LocaleKeys.bloodType.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500),
|
||||
// // bloodDonationVM.selectedBloodType?.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500),
|
||||
// (appState.isArabic()
|
||||
// ? (bloodDonationVM.selectedBloodType ?? LocaleKeys.select.tr())
|
||||
// : bloodDonationVM.selectedBloodType ?? LocaleKeys.select.tr(context: context))
|
||||
// .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500)
|
||||
// ],
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h),
|
||||
// ],
|
||||
// ).onPress(() {
|
||||
// showCommonBottomSheetWithoutHeight(context,
|
||||
// title: LocaleKeys.select.tr(context: context),
|
||||
// isDismissible: true,
|
||||
// child: SelectBloodGroupWidget(isArabic: appState.isArabic(), bloodDonationViewModel: bloodDonationVM),
|
||||
// callBackFunc: () {});
|
||||
// }),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// Container(
|
||||
// decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true),
|
||||
// child: SizedBox(
|
||||
// child: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// );
|
||||
// }),
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_assets.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_state.dart';
|
||||
import 'package:hmg_patient_app_new/core/dependencies.dart';
|
||||
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
|
||||
import 'package:hmg_patient_app_new/core/utils/utils.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/theme/colors.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
|
||||
|
||||
class MyChildVaccinePage extends StatefulWidget {
|
||||
const MyChildVaccinePage({super.key});
|
||||
|
||||
@override
|
||||
State<MyChildVaccinePage> createState() => _MyChildVaccinePageState();
|
||||
}
|
||||
|
||||
class _MyChildVaccinePageState extends State<MyChildVaccinePage> {
|
||||
int selectedChildIndex = 0;
|
||||
|
||||
final List<Map<String, dynamic>> children = [
|
||||
{"name": "Faris", "gender": "Son", "image": AppAssets.babyBoyImg},
|
||||
{"name": "Zaina", "gender": "Daughter", "image": AppAssets.babyGirlImg},
|
||||
{"name": "Ahmed", "gender": "Son", "image": AppAssets.babyBoyImg},
|
||||
];
|
||||
|
||||
final List<Map<String, dynamic>> vaccinesData = [
|
||||
{
|
||||
"age": "4 months",
|
||||
"dueDate": "19 Aug, 2025",
|
||||
"vaccines": ["IPV", "DTap", "Hepatitis B", "HIB", "Pneumococcal Conjugate (PCV)", "Rota"]
|
||||
},
|
||||
{
|
||||
"age": "2 months",
|
||||
"dueDate": "19 June, 2025",
|
||||
"vaccines": ["IPV", "DTap", "Hepatitis B", "HIB", "Pneumococcal Conjugate (PCV)", "Rota"]
|
||||
}
|
||||
];
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: AppColors.bgScaffoldColor,
|
||||
body: Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: CollapsingListView(
|
||||
title: "Child Vaccines".needTranslation,
|
||||
trailing: CustomButton(
|
||||
icon: AppAssets.add_icon,
|
||||
text: "Add Child",
|
||||
onPressed: () {},
|
||||
backgroundColor: AppColors.bgRedLightColor,
|
||||
borderColor: AppColors.bgRedLightColor,
|
||||
textColor: AppColors.primaryRedColor,
|
||||
iconColor: AppColors.primaryRedColor,
|
||||
padding: EdgeInsets.symmetric(vertical: 0.h, horizontal: 10.w),
|
||||
),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(height: 16.h),
|
||||
_buildChildSelector(),
|
||||
SizedBox(height: 24.h),
|
||||
ListView.separated(
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
padding: EdgeInsets.symmetric(horizontal: 24.w),
|
||||
itemCount: vaccinesData.length,
|
||||
separatorBuilder: (context, index) => SizedBox(height: 16.h),
|
||||
itemBuilder: (context, index) {
|
||||
return _buildVaccineCard(vaccinesData[index]);
|
||||
},
|
||||
),
|
||||
SizedBox(height: 24.h),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildChildSelector() {
|
||||
return SizedBox(
|
||||
height: 50.h,
|
||||
child: ListView.separated(
|
||||
scrollDirection: Axis.horizontal,
|
||||
padding: EdgeInsets.symmetric(horizontal: 24.w),
|
||||
itemCount: children.length,
|
||||
separatorBuilder: (context, index) => SizedBox(width: 12.w),
|
||||
itemBuilder: (context, index) {
|
||||
bool isSelected = selectedChildIndex == index;
|
||||
return GestureDetector(
|
||||
onTap: () => setState(() => selectedChildIndex = index),
|
||||
child: Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 8.h),
|
||||
decoration: BoxDecoration(
|
||||
color: isSelected ? AppColors.bgRedLightColor : AppColors.whiteColor,
|
||||
borderRadius: BorderRadius.circular(12.r),
|
||||
border: Border.all(
|
||||
color: isSelected ? AppColors.primaryRedColor : AppColors.borderOnlyColor.withValues(alpha: 0.1),
|
||||
width: 1,
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Image.asset(children[index]['image'], width: 24.h, height: 24.h),
|
||||
SizedBox(width: 8.w),
|
||||
Text(
|
||||
"${children[index]['name']} (${children[index]['gender']})",
|
||||
style: TextStyle(
|
||||
color: isSelected ? AppColors.primaryRedColor : AppColors.textColor,
|
||||
fontWeight: isSelected ? FontWeight.w600 : FontWeight.w500,
|
||||
fontSize: 14.f,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildVaccineCard(Map<String, dynamic> data) {
|
||||
return Container(
|
||||
padding: EdgeInsets.all(20.h),
|
||||
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
|
||||
color: AppColors.whiteColor,
|
||||
borderRadius: 24.r,
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
data['age'].toString().toText18(weight: FontWeight.bold, color: AppColors.textColor),
|
||||
SizedBox(height: 12.h),
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 8.h),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.bgScaffoldColor,
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Utils.buildSvgWithAssets(icon: AppAssets.calendar, width: 16.h, height: 16.h, iconColor: AppColors.textColor),
|
||||
SizedBox(width: 8.w),
|
||||
"Due Date : ${data['dueDate']}".toText12(fontWeight: FontWeight.w500, color: AppColors.textColor),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 16.h),
|
||||
... (data['vaccines'] as List).map((vaccine) => Padding(
|
||||
padding: EdgeInsets.only(bottom: 12.h),
|
||||
child: Row(
|
||||
children: [
|
||||
Utils.buildSvgWithAssets(icon: AppAssets.tickIcon, width: 20.h, height: 20.h, iconColor: Colors.green),
|
||||
SizedBox(width: 12.w),
|
||||
vaccine.toString().toText14(weight: FontWeight.w500, color: AppColors.textColor),
|
||||
],
|
||||
),
|
||||
)),
|
||||
SizedBox(height: 8.h),
|
||||
CustomButton(
|
||||
text: "Send via email",
|
||||
onPressed: () {},
|
||||
backgroundColor: AppColors.bgRedLightColor,
|
||||
borderColor: Colors.transparent,
|
||||
textColor: AppColors.primaryRedColor,
|
||||
icon: AppAssets.email,
|
||||
iconColor: AppColors.primaryRedColor,
|
||||
width: double.infinity,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue