import 'package:hmg_patient_app/models/Appointments/DoctorListResponse.dart'; import 'package:hmg_patient_app/theme/colors.dart'; import 'package:hmg_patient_app/uitl/translations_delegate_base.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; typedef OnFacilitySelected = Function(bool); class ResultByFacility extends StatelessWidget { List doctorsList = []; String selectedRegion = ''; RegionList patientDoctorAppointmentListHospital; OnFacilitySelected onFacilitySelected; ResultByFacility( {required this.doctorsList, required this.patientDoctorAppointmentListHospital, required this.onFacilitySelected, required this.selectedRegion}); @override Widget build(BuildContext context) { return Column( children: [ Visibility( visible: patientDoctorAppointmentListHospital .registeredDoctorMap?[selectedRegion]?.hmgSize != 0, child: InkWell( onTap: () { if (patientDoctorAppointmentListHospital .registeredDoctorMap?[selectedRegion]?.hmgSize == 0) return; onFacilitySelected(false); }, child: HospitalTitle( iconUrl: 'assets/images/svg/HMG.svg', title: TranslationBase.of(context).hmgHospital, isHMC: false, itemCount: "${patientDoctorAppointmentListHospital.registeredDoctorMap?[selectedRegion]?.hmgSize ?? 0}", nearest: patientDoctorAppointmentListHospital .registeredDoctorMap?[selectedRegion]?.hmgDistance), ), ), SizedBox(height: 16,), Visibility( visible: patientDoctorAppointmentListHospital .registeredDoctorMap?[selectedRegion]?.hmcSize != 0, child: InkWell( onTap: () { if (patientDoctorAppointmentListHospital .registeredDoctorMap?[selectedRegion]?.hmcSize == 0) return; onFacilitySelected(true); }, child: HospitalTitle( iconUrl: 'assets/images/svg/HMC.svg', title: TranslationBase.of(context).hmcHospital, isHMC: true, itemCount: "${patientDoctorAppointmentListHospital.registeredDoctorMap?[selectedRegion]?.hmcSize ?? 0}", nearest: patientDoctorAppointmentListHospital .registeredDoctorMap?[selectedRegion]?.hmcDistance), ), ) ]); } } class HospitalTitle extends StatelessWidget { final String title; final String iconUrl; final bool isHMC; final num? nearest; final String itemCount; const HospitalTitle( {super.key, required this.title, required this.iconUrl, required this.isHMC, required this.itemCount,this.nearest}); @override Widget build(BuildContext context) { return Material( color: Colors.white, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 24), child: Row( children: [ Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ SvgPicture.asset(iconUrl), SizedBox( width: 8, ), Text( title, style: TextStyle( fontSize: 18, color: isHMC ? Color(0xFF40ACC9) : Color(0xFFD02127), fontWeight: FontWeight.w600), ), ], ), SizedBox( height: 6, ), Row( children: [ Text( isHMC ? "${TranslationBase.of(context).MedicalCenterString(num.parse(itemCount)).replaceAll("@", itemCount)}" : "${TranslationBase.of(context).HospitalString(num.parse(itemCount)).replaceAll("@", itemCount)}", style: TextStyle( fontSize: 12, color: Colors.black, fontWeight: FontWeight.w600), ), Visibility( visible: nearest != double.infinity && nearest != "0" && nearest != 0, child: Row( children: [ SizedBox( width: 8, ), SvgPicture.asset( 'assets/images/svg/location.svg', ), SizedBox( width: 8, ), Text( "${TranslationBase.of(context).nearest}: $nearest ${TranslationBase.of(context).kilometerUnit}", style: TextStyle( fontSize: 12, color: Colors.black, fontWeight: FontWeight.w600), ), ], ), ), ], ), ], ), ), Padding( padding: EdgeInsets.all(8), child: Center( child: Icon( Icons.arrow_forward_ios, color: CustomColors.black, size: 16, ), ), ), ], ), ), ); } }