Merge commit '81b94814ce4f0a1e4626fe07a9b7933246d71336' into dev_v3.13.6
commit
a6ee6869cc
@ -0,0 +1,536 @@
|
|||||||
|
import 'dart:collection';
|
||||||
|
|
||||||
|
import 'package:auto_size_text/auto_size_text.dart';
|
||||||
|
import 'package:diplomaticquarterapp/config/config.dart';
|
||||||
|
import 'package:diplomaticquarterapp/theme/colors.dart';
|
||||||
|
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
import '../../../config/shared_pref_kay.dart';
|
||||||
|
import '../../../config/size_config.dart';
|
||||||
|
import '../../../core/model/hospitals/hospitals_model.dart';
|
||||||
|
import '../../../core/viewModels/project_view_model.dart';
|
||||||
|
import '../../../models/Appointments/DoctorListResponse.dart';
|
||||||
|
import '../../../models/Appointments/SearchInfoModel.dart';
|
||||||
|
import '../../../models/Clinics/ClinicListResponse.dart';
|
||||||
|
import '../../../services/appointment_services/GetDoctorsList.dart';
|
||||||
|
import '../../../services/authentication/auth_provider.dart';
|
||||||
|
import '../../../services/clinic_services/get_clinic_service.dart';
|
||||||
|
import '../../../uitl/app_toast.dart';
|
||||||
|
import '../../../uitl/gif_loader_dialog_utils.dart';
|
||||||
|
import '../../../uitl/translations_delegate_base.dart';
|
||||||
|
import '../../../widgets/transitions/fade_page.dart';
|
||||||
|
import '../../livecare/livecare_home.dart';
|
||||||
|
import '../DentalComplaints.dart';
|
||||||
|
import '../LaserBooking.dart';
|
||||||
|
import '../SearchResults.dart';
|
||||||
|
import '../dialog/clinic_list_dialog.dart';
|
||||||
|
import 'LiveCareBookAppointment.dart';
|
||||||
|
|
||||||
|
class SearchByHospital extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
State<SearchByHospital> createState() => _SearchByHospitalState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _SearchByHospitalState extends State<SearchByHospital> {
|
||||||
|
HospitalsModel? selectedHospital;
|
||||||
|
bool nearestAppo = false;
|
||||||
|
|
||||||
|
String? selectedClinicName;
|
||||||
|
List<HospitalsModel> projectsList = [];
|
||||||
|
List<ListClinicCentralized>? clinicIds = List.empty();
|
||||||
|
|
||||||
|
final GlobalKey projectDropdownKey = GlobalKey();
|
||||||
|
|
||||||
|
List<ListClinicCentralized> clinicsList = [];
|
||||||
|
bool isMobileAppDentalAllow = false;
|
||||||
|
ListClinicCentralized? selectedClinic;
|
||||||
|
|
||||||
|
String? dropdownValue;
|
||||||
|
String dropdownTitle = "";
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
WidgetsBinding.instance.addPostFrameCallback((_) => getProjectsList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
AppGlobal.context = context;
|
||||||
|
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 6, right: 6, top: 16),
|
||||||
|
child: Row(
|
||||||
|
children: <Widget>[
|
||||||
|
Checkbox(
|
||||||
|
activeColor: CustomColors.accentColor,
|
||||||
|
value: nearestAppo,
|
||||||
|
onChanged: (bool? value) {
|
||||||
|
nearestAppo = value ?? false;
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
AutoSizeText(
|
||||||
|
TranslationBase.of(context).nearestAppo.trim(),
|
||||||
|
maxLines: 1,
|
||||||
|
minFontSize: 10,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: SizeConfig.textMultiplier! * 1.4,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
letterSpacing: -0.39,
|
||||||
|
height: 0.8,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Text(TranslationBase.of(context).nearestAppo, style: TextStyle(fontSize: 14.0, letterSpacing: -0.56)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
mHeight(8),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
decoration: containerRadius(Colors.white, 12),
|
||||||
|
margin: EdgeInsets.only(left: 20, right: 20),
|
||||||
|
padding: EdgeInsets.only(left: 10, right: 10, top: 12, bottom: 12),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Flexible(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
TranslationBase.of(context).selectHospital,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 11,
|
||||||
|
letterSpacing: -0.44,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
height: 18,
|
||||||
|
width: double.infinity,
|
||||||
|
child: DropdownButtonHideUnderline(
|
||||||
|
child: DropdownButton<HospitalsModel>(
|
||||||
|
hint: Text(
|
||||||
|
TranslationBase.of(context).selectHospital),
|
||||||
|
value: selectedHospital,
|
||||||
|
iconSize: 0,
|
||||||
|
isExpanded: true,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14,
|
||||||
|
letterSpacing: -0.56,
|
||||||
|
color: Colors.black),
|
||||||
|
items: projectsList.map((HospitalsModel item) {
|
||||||
|
return DropdownMenuItem<HospitalsModel>(
|
||||||
|
value: item,
|
||||||
|
child: AutoSizeText(
|
||||||
|
item.name!,
|
||||||
|
maxLines: 1,
|
||||||
|
minFontSize: 10,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: SizeConfig.textMultiplier! * 1.6,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
letterSpacing: -0.39,
|
||||||
|
height: 0.8,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Text('${item.name!}'),
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
onChanged: (HospitalsModel? newValue) {
|
||||||
|
getClinicWrtHospital(newValue);
|
||||||
|
setState(() {
|
||||||
|
selectedHospital = newValue;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Icon(Icons.keyboard_arrow_down),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
if (clinicIds?.isNotEmpty == true) ...[
|
||||||
|
mHeight(8),
|
||||||
|
InkWell(
|
||||||
|
onTap: () {
|
||||||
|
showClickListDialog(context, clinicIds ?? List.empty(),
|
||||||
|
onSelection: (ListClinicCentralized clincs) {
|
||||||
|
selectedClinic = clincs;
|
||||||
|
Navigator.pop(context);
|
||||||
|
setState(() {
|
||||||
|
dropdownTitle = clincs.clinicDescription!;
|
||||||
|
dropdownValue = clincs.clinicID.toString() +
|
||||||
|
"-" +
|
||||||
|
clincs.isLiveCareClinicAndOnline.toString() +
|
||||||
|
"-" +
|
||||||
|
clincs.liveCareClinicID.toString() +
|
||||||
|
"-" +
|
||||||
|
clincs.liveCareServiceID.toString();
|
||||||
|
});
|
||||||
|
getDoctorsList(context);
|
||||||
|
|
||||||
|
context
|
||||||
|
.read<ProjectViewModel>()
|
||||||
|
.analytics
|
||||||
|
.appointment
|
||||||
|
.book_appointment_select_clinic(
|
||||||
|
appointment_type: 'regular',
|
||||||
|
clinic: clincs.clinicDescription);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
width: double.infinity,
|
||||||
|
decoration: containerRadius(Colors.white, 12),
|
||||||
|
margin: EdgeInsets.only(left: 20, right: 20),
|
||||||
|
padding: EdgeInsets.only(left: 10, right: 10, top: 12, bottom: 8),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
TranslationBase.of(context).selectClinic,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 11,
|
||||||
|
letterSpacing: -0.44,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 4, bottom: 2),
|
||||||
|
child: Text(
|
||||||
|
dropdownTitle,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 13,
|
||||||
|
letterSpacing: -0.44,
|
||||||
|
fontWeight: FontWeight.w600,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Icon(Icons.keyboard_arrow_down),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
]
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void openDropdown(GlobalKey key) {
|
||||||
|
GestureDetector? detector;
|
||||||
|
detector = searchForGestureDetector(key.currentContext!);
|
||||||
|
assert(detector != null);
|
||||||
|
detector!.onTap!();
|
||||||
|
}
|
||||||
|
|
||||||
|
GestureDetector? searchForGestureDetector(BuildContext element) {
|
||||||
|
GestureDetector? detector;
|
||||||
|
element.visitChildElements((element) {
|
||||||
|
if (element.widget != null && element.widget is GestureDetector) {
|
||||||
|
detector = element.widget as GestureDetector?;
|
||||||
|
//return false;
|
||||||
|
} else {
|
||||||
|
searchForGestureDetector(element);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return detector;
|
||||||
|
}
|
||||||
|
|
||||||
|
getProjectsList() {
|
||||||
|
GifLoaderDialogUtils.showMyDialog(context);
|
||||||
|
|
||||||
|
int languageID = context.read<ProjectViewModel>().isArabic ? 1 : 2;
|
||||||
|
ClinicListService service = new ClinicListService();
|
||||||
|
List<HospitalsModel> projectsListLocal = [];
|
||||||
|
service.getProjectsList(languageID, context).then((res) {
|
||||||
|
GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
|
||||||
|
if (res['MessageStatus'] == 1) {
|
||||||
|
setState(() {
|
||||||
|
res['ListProject'].forEach((v) {
|
||||||
|
projectsListLocal.add(new HospitalsModel.fromJson(v));
|
||||||
|
});
|
||||||
|
projectsList = projectsListLocal;
|
||||||
|
});
|
||||||
|
} else {}
|
||||||
|
}).catchError((err) {
|
||||||
|
GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
}).catchError((err) {
|
||||||
|
GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
|
||||||
|
print(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void getClinicWrtHospital(HospitalsModel? newValue) async {
|
||||||
|
GifLoaderDialogUtils.showMyDialog(context);
|
||||||
|
ClinicListService service = new ClinicListService();
|
||||||
|
List<HospitalsModel> projectsListLocal = [];
|
||||||
|
setState(() {
|
||||||
|
clinicIds = List.empty();
|
||||||
|
});
|
||||||
|
List<ListClinicCentralized> clinicId = [];
|
||||||
|
try {
|
||||||
|
Map res = await service.getClinicByHospital(
|
||||||
|
projectID: newValue?.mainProjectID.toString() ?? "");
|
||||||
|
GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
if (res['MessageStatus'] == 1) {
|
||||||
|
List list = res['ListClinic'];
|
||||||
|
|
||||||
|
if (list.isEmpty) {
|
||||||
|
AppToast.showErrorToast(
|
||||||
|
message: TranslationBase.of(context).NoClinicFound,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
res['ListClinic'].forEach((v) {
|
||||||
|
clinicId.add(ListClinicCentralized.fromJson(v));
|
||||||
|
});
|
||||||
|
clinicIds = clinicId;
|
||||||
|
setState(() {});
|
||||||
|
} else {
|
||||||
|
AppToast.showErrorToast(
|
||||||
|
message: TranslationBase.of(context).NoClinicFound,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
print("the error is $e");
|
||||||
|
AppToast.showErrorToast(
|
||||||
|
message: TranslationBase.of(context).NoClinicFound,
|
||||||
|
);
|
||||||
|
GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
// .then((res) {
|
||||||
|
// print("the result is obtained");
|
||||||
|
// GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
// if (res['MessageStatus'] == 1) {
|
||||||
|
// List list = res['ListClinic'];
|
||||||
|
//
|
||||||
|
// if(list.isEmpty){
|
||||||
|
// AppToast.showErrorToast(message:
|
||||||
|
// TranslationBase.of(context).NoClinicFound,
|
||||||
|
// );
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// res['ListClinic'].forEach((v) {
|
||||||
|
// clinicId?.add(ListClinicCentralized.fromJson(v));
|
||||||
|
// });
|
||||||
|
// clinicIds = clinicId;
|
||||||
|
// setState(() {
|
||||||
|
//
|
||||||
|
// });
|
||||||
|
// } else {
|
||||||
|
// AppToast.showErrorToast(message:
|
||||||
|
// TranslationBase.of(context).NoClinicFound,
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }).catchError((err) {
|
||||||
|
// print('the error is $err');
|
||||||
|
// AppToast.showErrorToast(message:
|
||||||
|
// TranslationBase.of(context).NoClinicFound,
|
||||||
|
// );
|
||||||
|
// GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
// }).catchError((err) {
|
||||||
|
// AppToast.showErrorToast(message:
|
||||||
|
// TranslationBase.of(context).NoClinicFound,
|
||||||
|
// );
|
||||||
|
// GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
//
|
||||||
|
// print(err);
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future navigateToDentalComplaints(
|
||||||
|
BuildContext context, SearchInfo searchInfo) async {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
FadePage(
|
||||||
|
page: DentalComplaints(searchInfo: searchInfo),
|
||||||
|
),
|
||||||
|
).then((value) {
|
||||||
|
setState(() {
|
||||||
|
dropdownValue = null;
|
||||||
|
selectedHospital = null;
|
||||||
|
clinicIds = List.empty();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
callDoctorsSearchAPI(int clinicID) {
|
||||||
|
int languageID = context.read<ProjectViewModel>().isArabic ? 1 : 2;
|
||||||
|
GifLoaderDialogUtils.showMyDialog(context);
|
||||||
|
List<DoctorList> doctorsList = [];
|
||||||
|
List<String> arr = [];
|
||||||
|
List<String> arrDistance = [];
|
||||||
|
List<String> result;
|
||||||
|
int numAll;
|
||||||
|
List<PatientDoctorAppointmentList> _patientDoctorAppointmentListHospital =
|
||||||
|
[];
|
||||||
|
|
||||||
|
DoctorsListService service = new DoctorsListService();
|
||||||
|
service
|
||||||
|
.getDoctorsList(
|
||||||
|
clinicID,
|
||||||
|
selectedHospital?.mainProjectID.toString() != ""
|
||||||
|
? int.parse(selectedHospital?.mainProjectID.toString() ?? "-1")
|
||||||
|
: 0,
|
||||||
|
nearestAppo,
|
||||||
|
languageID,
|
||||||
|
null)
|
||||||
|
.then((res) {
|
||||||
|
GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
if (res['MessageStatus'] == 1) {
|
||||||
|
setState(() {
|
||||||
|
if (res['DoctorList'].length != 0) {
|
||||||
|
doctorsList.clear();
|
||||||
|
res['DoctorList'].forEach((v) {
|
||||||
|
doctorsList.add(DoctorList.fromJson(v));
|
||||||
|
});
|
||||||
|
doctorsList.forEach((element) {
|
||||||
|
List<PatientDoctorAppointmentList> doctorByHospital =
|
||||||
|
_patientDoctorAppointmentListHospital
|
||||||
|
.where(
|
||||||
|
(elementClinic) =>
|
||||||
|
elementClinic.filterName == element.projectName,
|
||||||
|
)
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
if (doctorByHospital.length != 0) {
|
||||||
|
_patientDoctorAppointmentListHospital[
|
||||||
|
_patientDoctorAppointmentListHospital
|
||||||
|
.indexOf(doctorByHospital[0])]
|
||||||
|
.patientDoctorAppointmentList!
|
||||||
|
.add(element);
|
||||||
|
} else {
|
||||||
|
_patientDoctorAppointmentListHospital.add(
|
||||||
|
PatientDoctorAppointmentList(
|
||||||
|
filterName: element.getProjectCompleteName(),
|
||||||
|
distanceInKMs:
|
||||||
|
element.projectDistanceInKiloMeters.toString(),
|
||||||
|
patientDoctorAppointment: element));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {}
|
||||||
|
});
|
||||||
|
|
||||||
|
result = LinkedHashSet<String>.from(arr).toList();
|
||||||
|
numAll = result.length;
|
||||||
|
navigateToSearchResults(
|
||||||
|
context, doctorsList, _patientDoctorAppointmentListHospital);
|
||||||
|
} else {
|
||||||
|
AppToast.showErrorToast(message: res['ErrorEndUserMessage']);
|
||||||
|
}
|
||||||
|
}).catchError((err) {
|
||||||
|
GifLoaderDialogUtils.hideDialog(context);
|
||||||
|
print(err);
|
||||||
|
AppToast.showErrorToast(message: err, localContext: context);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Future navigateToSearchResults(
|
||||||
|
context,
|
||||||
|
List<DoctorList> docList,
|
||||||
|
List<PatientDoctorAppointmentList>
|
||||||
|
patientDoctorAppointmentListHospital) async {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
FadePage(
|
||||||
|
page: SearchResults(
|
||||||
|
isLiveCareAppointment: false,
|
||||||
|
doctorsList: docList,
|
||||||
|
patientDoctorAppointmentListHospital:
|
||||||
|
patientDoctorAppointmentListHospital)))
|
||||||
|
.then((value) {
|
||||||
|
print("navigation return ");
|
||||||
|
dropdownValue = null;
|
||||||
|
dropdownTitle = "";
|
||||||
|
selectedHospital = null;
|
||||||
|
clinicIds = List.empty();
|
||||||
|
setState(() {});
|
||||||
|
// getProjectsList();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Future navigateToLaserClinic(BuildContext context) async {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
FadePage(
|
||||||
|
page: LaserBooking(),
|
||||||
|
),
|
||||||
|
).then((value) {
|
||||||
|
print("LaserBooking navigation return ");
|
||||||
|
setState(() {
|
||||||
|
dropdownValue = null;
|
||||||
|
selectedHospital = null;
|
||||||
|
clinicIds = List.empty();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getDoctorsList(BuildContext context) {
|
||||||
|
SearchInfo searchInfo = new SearchInfo();
|
||||||
|
if (dropdownValue != null) if (dropdownValue!.split("-")[0] == "17") {
|
||||||
|
searchInfo.ProjectID = int.parse(selectedHospital?.mainProjectID ?? "");
|
||||||
|
searchInfo.ClinicID = int.parse(dropdownValue!.split("-")[0]);
|
||||||
|
searchInfo.hospital = selectedHospital;
|
||||||
|
searchInfo.clinic = selectedClinic;
|
||||||
|
searchInfo.date = DateTime.now();
|
||||||
|
|
||||||
|
if (context.read<ProjectViewModel>().isLogin) {
|
||||||
|
if (context.read<ProjectViewModel>().user.age! > 12) {
|
||||||
|
navigateToDentalComplaints(context, searchInfo);
|
||||||
|
} else {
|
||||||
|
callDoctorsSearchAPI(17);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
navigateToDentalComplaints(context, searchInfo);
|
||||||
|
}
|
||||||
|
} else if (dropdownValue!.split("-")[0] == "253") {
|
||||||
|
navigateToLaserClinic(context);
|
||||||
|
// callDoctorsSearchAPI();
|
||||||
|
} else if (dropdownValue!.split("-")[1] == "true"
|
||||||
|
// && authProvider.isLogin &&
|
||||||
|
// authUser.patientType == 1
|
||||||
|
) {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
FadePage(
|
||||||
|
page: LiveCareBookAppointment(
|
||||||
|
clinicName: dropdownTitle,
|
||||||
|
liveCareClinicID: dropdownValue!.split("-")[2],
|
||||||
|
liveCareServiceID: dropdownValue!.split("-")[3]),
|
||||||
|
),
|
||||||
|
).then((value) {
|
||||||
|
print("navigation return ");
|
||||||
|
if (value == "false") dropdownValue = null;
|
||||||
|
|
||||||
|
// setState(() {
|
||||||
|
// });
|
||||||
|
if (value == "livecare") {
|
||||||
|
Navigator.push(context, FadePage(page: LiveCareHome()));
|
||||||
|
}
|
||||||
|
if (value == "schedule") {
|
||||||
|
callDoctorsSearchAPI(int.parse(dropdownValue!.split("-")[0]));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setState(() {});
|
||||||
|
} else {
|
||||||
|
callDoctorsSearchAPI(int.parse(dropdownValue!.split("-")[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue