Dr Search fixed

haroon_dev
haroon amjad 24 hours ago
parent 6def7b5263
commit 400e5daac0

@ -331,6 +331,42 @@ class BookAppointmentsViewModel extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void filterDoctors(String query) {
if (query.isEmpty) {
filteredDoctorList = List.from(doctorsList);
// _groupDoctorsList();
setIsNearestAppointmentSelected(isNearestAppointmentSelected);
notifyListeners();
return;
}
filteredDoctorList = doctorsList.where((doctor) {
final name = (doctor.name ?? '').toLowerCase();
final clinicName = (doctor.clinicName ?? '').toLowerCase();
final projectName = (doctor.projectName ?? '').toLowerCase();
final q = query.toLowerCase();
return name.contains(q) || clinicName.contains(q) || projectName.contains(q);
}).toList();
// Re-group filtered list
final clinicMap = <String, List<DoctorsListResponseModel>>{};
final hospitalMap = <String, List<DoctorsListResponseModel>>{};
for (var doctor in filteredDoctorList) {
final clinicKey = (doctor.clinicName ?? 'Unknown').trim();
clinicMap.putIfAbsent(clinicKey, () => []).add(doctor);
final hospitalKey = (doctor.projectName ?? 'Unknown').trim();
hospitalMap.putIfAbsent(hospitalKey, () => []).add(doctor);
}
doctorsListByClinic = clinicMap.values.toList();
doctorsListByHospital = hospitalMap.values.toList();
doctorsListGrouped = isSortByClinic ? doctorsListByClinic : doctorsListByHospital;
notifyListeners();
}
void filterClinics(String? query) { void filterClinics(String? query) {
if (query!.isEmpty) { if (query!.isEmpty) {
_filteredClinicsList = List.from(clinicsList); _filteredClinicsList = List.from(clinicsList);

@ -167,14 +167,14 @@ class _SelectDoctorPageState extends State<SelectDoctorPage> {
? GestureDetector( ? GestureDetector(
onTap: () { onTap: () {
searchEditingController.clear(); searchEditingController.clear();
bookAppointmentsViewModel.filterClinics(""); bookAppointmentsViewModel.filterDoctors("");
textFocusNode.unfocus(); textFocusNode.unfocus();
}, },
child: Utils.buildSvgWithAssets(icon: AppAssets.close_bottom_sheet_icon, width: 20.h, height: 20.h, fit: BoxFit.scaleDown), child: Utils.buildSvgWithAssets(icon: AppAssets.close_bottom_sheet_icon, width: 20.h, height: 20.h, fit: BoxFit.scaleDown),
) )
: null, : null,
onChange: (value) { onChange: (value) {
bookAppointmentsViewModel.filterClinics(value!); bookAppointmentsViewModel.filterDoctors(value ?? "");
}, },
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
vertical: ResponsiveExtension(10).h, vertical: ResponsiveExtension(10).h,

Loading…
Cancel
Save