From c09c1599fcad0aed09b1fdba25838a7aecf17855 Mon Sep 17 00:00:00 2001 From: Amjad Amireh Date: Wed, 6 May 2020 10:51:05 +0300 Subject: [PATCH 01/14] Filter search in outPatiant and format time --- lib/models/patient/patiant_info_model.dart | 6 +- lib/providers/patients_provider.dart | 4 +- .../patients/patient_search_screen.dart | 8 +- lib/screens/patients/patients_screen.dart | 363 +++++++++++++----- 4 files changed, 277 insertions(+), 104 deletions(-) diff --git a/lib/models/patient/patiant_info_model.dart b/lib/models/patient/patiant_info_model.dart index 94a5c09d..c85edace 100644 --- a/lib/models/patient/patiant_info_model.dart +++ b/lib/models/patient/patiant_info_model.dart @@ -50,9 +50,10 @@ class PatiantInformtion { String age; String genderDescription; String nursingStationName; + String appointmentDate; PatiantInformtion({ - this.list, + this.list, this.projectId, this.clinicId, this.doctorId, @@ -85,6 +86,8 @@ class PatiantInformtion { this.age, this.genderDescription, this.nursingStationName, + this.appointmentDate, + }); factory PatiantInformtion.fromJson(Map json) => PatiantInformtion( @@ -120,6 +123,7 @@ class PatiantInformtion { age: json["Age"], genderDescription: json["GenderDescription"], nursingStationName: json["NursingStationName"], + appointmentDate: json["AppointmentDate"], ); diff --git a/lib/providers/patients_provider.dart b/lib/providers/patients_provider.dart index f207ee15..bf22e565 100644 --- a/lib/providers/patients_provider.dart +++ b/lib/providers/patients_provider.dart @@ -44,8 +44,8 @@ class PatientsProvider with ChangeNotifier { // var srvicePatiant = ["GetMyOutPatient", "GetMyInPatient", "GtMyDischargePatient","GtMyReferredPatient","GtMyDischargeReferralPatient","GtMyTomorrowPatient","GtMyReferralPatient"]; // print("a=SERVICES_PATIANT[patientType]========='=======a"); int val = int.parse(patientType); - final url = - BASE_URL + 'DoctorApplication.svc/REST/' + SERVICES_PATIANT[val]; + final url ="https://uat.hmgwebservices.com/Services/DoctorApplication.svc/REST/"+ SERVICES_PATIANT[val];///"https://uat.hmgwebservices.com/Services/Doctors.svc/REST/"; + //BASE_URL + 'DoctorApplication.svc/REST/' + SERVICES_PATIANT[val]; // print("a===========$url=======a"); try { diff --git a/lib/screens/patients/patient_search_screen.dart b/lib/screens/patients/patient_search_screen.dart index 97987ff0..2582310a 100644 --- a/lib/screens/patients/patient_search_screen.dart +++ b/lib/screens/patients/patient_search_screen.dart @@ -37,8 +37,8 @@ class _PatientSearchScreenState extends State { var _patientSearchFormValues = PatientModel( ProjectID: 15, - ClinicID: 14, - DoctorID: 243763, + ClinicID: 0, + DoctorID: 4709, FirstName: "0", MiddleName: "0", LastName: "0", @@ -64,13 +64,13 @@ class _PatientSearchScreenState extends State { if (_formKey.currentState.validate()) { // If all data are correct then save data to out variables // _formKey.currentState.save(); - // sharedPref.setString(TOKEN,'@dm!n'); + sharedPref.setString(TOKEN,'@dm!n'); sharedPref.setString(SLECTED_PATIENT_TYPE,_selectedType); print('_selectedType${_selectedType}'); String token = await sharedPref.getString(TOKEN); int projectID = await sharedPref.getInt(PROJECT_ID); _patientSearchFormValues.TokenID = token; - _patientSearchFormValues.ProjectID = projectID; + _patientSearchFormValues.ProjectID = 15;//projectID; // print(_patientSearchFormValues.PatientMobileNumber+"dfdfdfddf"); Navigator.of(context).pushNamed(PATIENTS, arguments: { "patientSearchForm": _patientSearchFormValues, diff --git a/lib/screens/patients/patients_screen.dart b/lib/screens/patients/patients_screen.dart index 91c15022..fc2eb3d6 100644 --- a/lib/screens/patients/patients_screen.dart +++ b/lib/screens/patients/patients_screen.dart @@ -6,6 +6,7 @@ *@desc: */ + import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patient_model.dart'; import 'package:doctor_app_flutter/models/patient/topten_users_res_model.dart'; @@ -13,7 +14,9 @@ import 'package:doctor_app_flutter/providers/patients_provider.dart'; import 'package:doctor_app_flutter/routes.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; //************* @@ -33,7 +36,7 @@ class PatientsScreen extends StatefulWidget { class _PatientsScreenState extends State { List litems; - // final List parsed; + // final List parsed; List parsed; //********** List date; @@ -42,10 +45,7 @@ class _PatientsScreenState extends State { List responseModelList; List responseModelList2; - - - - + // List _locations = ['Today', 'Old Date', 'YESTERDAY']; List _locations = ['Today', 'Tomorrow', 'Next Week']; int _activeLocation = 0; @@ -59,6 +59,7 @@ class _PatientsScreenState extends State { final _controller = TextEditingController(); //************** PatientModel patient; + PatientsProvider patientsProv; @override void didChangeDependencies() { @@ -71,7 +72,6 @@ class _PatientsScreenState extends State { patientType = routeArgs['selectedType']; patientTypetitle = SERVICES_PATIANT_HEADER[int.parse(patientType)]; - print(patientType); if (_isInit) { @@ -82,137 +82,301 @@ class _PatientsScreenState extends State { int val2 = int.parse(patientType); litems = res[SERVICES_PATIANT2[val2]]; - parsed = litems; + parsed = litems; responseModelList = new ModelResponse.fromJson(parsed).list; - responseModelList2=responseModelList; + responseModelList2 = responseModelList; //******************** _isLoading = false; + _hasError = res['ErrorEndUserMessage']; }); print(res); }).catchError((error) { + // patientsProv.isLoading=false; + // patientsProv.isError=true; + print("====================error================"); print(error); }); } + _isInit = false; + super.didChangeDependencies(); } + /* *@author: Amjad Amireh *@Date:2/5/2020 *@param: - *@return:PatientsScreen Search textbox + *@return:PatientsScreen Search textbox filter *@desc: */ - searchData(String str) { + + searchData(String str) { + this.responseModelList = this.responseModelList2; var strExist = str.length > 0 ? true : false; if (strExist) { - List filterData=[] ; + List filterData = []; + for (var i = 0; i < responseModelList2.length; i++) { - String firstName = responseModelList[i].firstName.toUpperCase(); String lastName = responseModelList[i].lastName.toUpperCase(); - if (firstName.contains(str.toUpperCase())||lastName.contains(str.toUpperCase())) { - print("==========data done==========="); + if (firstName.contains(str.toUpperCase()) || + lastName.contains(str.toUpperCase())) { filterData.add(responseModelList[i]); } } + setState(() { - print("==========data good==========="); this.responseModelList = filterData; }); } else { setState(() { - print("==========no data==========="); - - this.responseModelList =this.responseModelList2; + this.responseModelList = this.responseModelList2; + }); + } + } + +//***********DateFormat************** +/* + *@author: Amjad Amireh + *@Date:5/5/2020 + *@param: + *@return:Convert time from Milesecond to date with time + + *@desc: + */ + convertDate(String str) { + String timeConvert; + const start = "/Date("; + + const end = "+0300)"; + + final startIndex = str.indexOf(start); + + final endIndex = str.indexOf(end, startIndex + start.length); + + var date = new DateTime.fromMillisecondsSinceEpoch( + int.parse(str.substring(startIndex + start.length, endIndex))); + + String newDateformat = date.year.toString() + + "/" + + date.month.toString().padLeft(2, '0') + + "/" + + date.day.toString().padLeft(2, '0') + + " " + + "-" + + " " + + date.hour.toString().padLeft(2, '0') + + ":" + + date.minute.toString().toString().padLeft(2, '0'); + + return newDateformat.toString(); + } + +/* + *@author: Amjad Amireh + *@Date:5/5/2020 + *@param: + *@return:Convert time from Milesecond to date + + *@desc: + */ + convertDateFormat(String str) { + String timeConvert; + const start = "/Date("; + const end = "+0300)"; + + final startIndex = str.indexOf(start); + final endIndex = str.indexOf(end, startIndex + start.length); + + var date = new DateTime.fromMillisecondsSinceEpoch( + int.parse(str.substring(startIndex + start.length, endIndex))); + String newDate = date.year.toString() + + "-" + + date.month.toString().padLeft(2, '0') + + "-" + + date.day.toString().padLeft(2, '0'); + + return newDate.toString(); + } + + + filterBooking(String str) { + this.responseModelList = this.responseModelList2; + + var strExist = str.length > 0 ? true : false; + if (true) { + List filterDate = []; + + for (var i = 0; i < responseModelList2.length; i++) { + String patiantAppointment = + convertDateFormat(responseModelList[i].appointmentDate); + + String dateAppointment = checkDate(patiantAppointment); + + if (dateAppointment.contains(str)) { + filterDate.add(responseModelList[i]); + } + } + + setState(() { + this.responseModelList = filterDate; + }); + } else { + setState(() { + this.responseModelList = this.responseModelList2; }); } } + String checkDate(String dateString) { + String date; + DateTime checkedTime = DateTime.parse(dateString); + DateTime currentTime = DateTime.now(); + + if ((currentTime.year == checkedTime.year) && + (currentTime.month == checkedTime.month) && + (currentTime.day == checkedTime.day)) { + return "TODAY"; + } else if ((currentTime.year == checkedTime.year) && + (currentTime.month == checkedTime.month)) { + if ((currentTime.day - checkedTime.day) == 1) { + return "YESTERDAY"; + } else if ((currentTime.day - checkedTime.day) == -1) { + return "TOMORROW"; + } + if ((currentTime.day - checkedTime.day) <= -2) { + return "Next Week"; + } else { + return "Old Date"; + } + } + return "Old Date"; + } + +//************************* @override Widget build(BuildContext context) { PatientsProvider patientsProv = Provider.of(context); return AppScaffold( - appBarTitle: patientTypetitle, + appBarTitle: patientTypetitle, //***********Modify by amjad (create List view to insert all new data webservise in scroll )************* - body: Container( - // margin: EdgeInsets.all(20), - child: ListView(scrollDirection: Axis.vertical, children: [ - Container( - child: litems == null - ? Column() - : - Column( - children: [ - Padding( - padding: EdgeInsets.only( - top: MediaQuery.of(context).size.height * 0.03), - child: _locationBar(context), - ), - SizedBox(height: 10.0), - Container( - width: SizeConfig.screenWidth * 0.80, - child: TextField( - controller: _controller, - - onChanged: (String str){ - // print(str); - this.searchData(str); - - }, - decoration: - buildInputDecoration(context, 'Search patiant'), - ), - ), - Container( - margin: EdgeInsets.fromLTRB(15, 0, 15, 0), - child: Column( - - children: - responseModelList.map((PatiantInformtion item) { - return InkWell( - child: CardWithBgWidget( - - widget: Column( - - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AppText( - item.firstName, - fontSize: 2.5 * SizeConfig.textMultiplier, - ), - SizedBox( - height: 8, - ), - AppText(item.lastName, - fontSize: - 2.5 * SizeConfig.textMultiplier), - SizedBox( - height: 8, - ), - AppText(item.middleName, - fontSize: - 2.5 * SizeConfig.textMultiplier), - ], + body: patientsProv.isLoading + ? DrAppCircularProgressIndeicator() + : patientsProv.isError + ? Center( + child: Text( + patientsProv.error, + style: TextStyle(color: Theme.of(context).errorColor), + ), + ) + : Container( + + child: ListView(scrollDirection: Axis.vertical, children: < + Widget>[ + Container( + child: litems == null + ? Column( + children: [ + Container( + child: Center( + child: + DrAppCircularProgressIndeicator()), + ), + Container( + child: Text( + "Sorry There is No Data", + style: TextStyle( + color: Theme.of(context).errorColor), + ), + ) + ], + ) + : Column( + children: [ + Padding( + padding: EdgeInsets.only( + top: + MediaQuery.of(context).size.height * + 0.03), + child: SERVICES_PATIANT2[ + int.parse(patientType)] == + "List_MyOutPatient" + ? _locationBar(context) + : Container(), ), - ), - onTap: () { - Navigator.of(context).pushNamed( - PATIENTS_PROFILE, - arguments: {"patient": item}); - }, - ); - }).toList(), - ), - ), - ], - )) - ]))); + SizedBox(height: 10.0), + Container( + width: SizeConfig.screenWidth * 0.80, + child: TextField( + controller: _controller, + onChanged: (String str) { + + this.searchData(str); + }, + decoration: buildInputDecoration( + context, 'Search patiant'), + ), + ), + Container( + margin: EdgeInsets.fromLTRB(15, 0, 15, 0), + child: Column( + children: responseModelList + .map((PatiantInformtion item) { + return InkWell( + child: CardWithBgWidget( + widget: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + AppText( + item.firstName + + " " + + item.lastName + + "- " + + item.patientId.toString(), + fontSize: 2.5 * + SizeConfig.textMultiplier, + fontWeight: FontWeight.bold, + ), + SizedBox( + height: 8, + ), + SERVICES_PATIANT2[int.parse( + patientType)] == + "List_MyOutPatient" + ? AppText( + convertDate(item + .appointmentDate + .toString()), + fontSize: 2.5 * + SizeConfig + .textMultiplier) + : AppText( + item.nationalityName, + fontSize: 2.5 * + SizeConfig + .textMultiplier) + ], + ), + ), + onTap: () { + Navigator.of(context).pushNamed( + PATIENTS_PROFILE, + arguments: {"patient": item}); + }, + ); + }).toList(), + ), + ), + ], + )) + ]))); } //***********amjad update**buildInputDecoration ***to search box******** @@ -243,22 +407,27 @@ class _PatientsScreenState extends State { mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.center, - children: _locations.map((l) { - bool _isActive = _locations[_activeLocation] == l ? true : false; + children: _locations.map((item) { + bool _isActive = _locations[_activeLocation] == item ? true : false; return Column(mainAxisSize: MainAxisSize.min, children: [ InkWell( child: Text( - l, + item, style: TextStyle( fontSize: 15, color: Colors.white, fontWeight: FontWeight.bold), ), onTap: () { - print(l); - print(_locations.indexOf(l)); + + print(_locations.indexOf(item)); + + + filterBooking(item.toString()); + setState(() { - _activeLocation = _locations.indexOf(l); + _activeLocation = _locations.indexOf(item); + }); }), _isActive From 7c291f8d63fda16d71bfffac8527a4063f6f4df8 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Wed, 6 May 2020 14:17:54 +0300 Subject: [PATCH 02/14] add comment and fix some pugs --- lib/interceptor/http_interceptor.dart | 1 + lib/models/patient/lab_orders_req_model.dart | 8 ++++++++ lib/models/patient/lab_orders_res_model.dart | 7 +++++++ lib/models/patient/prescription_req_model.dart | 7 +++++++ lib/models/patient/prescription_res_model.dart | 7 +++++++ lib/models/patient/radiology_req_model.dart | 7 +++++++ lib/models/patient/radiology_res_model.dart | 7 +++++++ lib/models/patient/vital_sign_res_model.dart | 7 +++++++ lib/providers/patients_provider.dart | 2 +- lib/routes.dart | 8 ++++---- lib/screens/patients/patients_screen.dart | 1 - 11 files changed, 56 insertions(+), 6 deletions(-) diff --git a/lib/interceptor/http_interceptor.dart b/lib/interceptor/http_interceptor.dart index c27b3cb9..4d0f9c33 100644 --- a/lib/interceptor/http_interceptor.dart +++ b/lib/interceptor/http_interceptor.dart @@ -25,6 +25,7 @@ class HttpInterceptor extends InterceptorContract { Future interceptRequest({RequestData data}) async { print('RequestData ${data.body}'); + print('RequestData ${data.url}'); try { data.headers["Content-Type"] = "application/json"; data.headers["Accept"] = "application/json"; diff --git a/lib/models/patient/lab_orders_req_model.dart b/lib/models/patient/lab_orders_req_model.dart index dc0fb584..0295ce8d 100644 --- a/lib/models/patient/lab_orders_req_model.dart +++ b/lib/models/patient/lab_orders_req_model.dart @@ -1,3 +1,11 @@ + +/* + *@author: Elham Rababah + *@Date:6/5/2020 + *@param: + *@return:LabOrdersReqModel + *@desc: LabOrdersReqModel class + */ class LabOrdersReqModel { int patientID; int patientTypeID; diff --git a/lib/models/patient/lab_orders_res_model.dart b/lib/models/patient/lab_orders_res_model.dart index 41d41125..556f0474 100644 --- a/lib/models/patient/lab_orders_res_model.dart +++ b/lib/models/patient/lab_orders_res_model.dart @@ -1,3 +1,10 @@ +/* + *@author: Elham Rababah + *@Date:6/5/2020 + *@param: + *@return:LabOrdersResModel + *@desc: LabOrdersResModel class + */ class LabOrdersResModel { String setupID; int projectID; diff --git a/lib/models/patient/prescription_req_model.dart b/lib/models/patient/prescription_req_model.dart index a4bfe1b7..45ca2d74 100644 --- a/lib/models/patient/prescription_req_model.dart +++ b/lib/models/patient/prescription_req_model.dart @@ -1,3 +1,10 @@ +/* + *@author: Elham Rababah + *@Date:6/5/2020 + *@param: + *@return:PrescriptionReqModel + *@desc: PrescriptionReqModel class + */ class PrescriptionReqModel { int patientID; int setupID; diff --git a/lib/models/patient/prescription_res_model.dart b/lib/models/patient/prescription_res_model.dart index 5ff08e3e..7bb545ee 100644 --- a/lib/models/patient/prescription_res_model.dart +++ b/lib/models/patient/prescription_res_model.dart @@ -1,3 +1,10 @@ +/* + *@author: Elham Rababah + *@Date:6/5/2020 + *@param: + *@return:PrescriptionResModel + *@desc: PrescriptionResModel class + */ class PrescriptionResModel { String setupID; int projectID; diff --git a/lib/models/patient/radiology_req_model.dart b/lib/models/patient/radiology_req_model.dart index 35b398bf..b39fb393 100644 --- a/lib/models/patient/radiology_req_model.dart +++ b/lib/models/patient/radiology_req_model.dart @@ -1,3 +1,10 @@ +/* + *@author: Elham Rababah + *@Date:6/5/2020 + *@param: + *@return:RadiologyReqModel + *@desc: RadiologyReqModel class + */ class RadiologyReqModel { int patientID; int projectID; diff --git a/lib/models/patient/radiology_res_model.dart b/lib/models/patient/radiology_res_model.dart index 45161195..6c6509a9 100644 --- a/lib/models/patient/radiology_res_model.dart +++ b/lib/models/patient/radiology_res_model.dart @@ -1,3 +1,10 @@ +/* + *@author: Elham Rababah + *@Date:6/5/2020 + *@param: + *@return:RadiologyResModel + *@desc: RadiologyResModel class + */ class RadiologyResModel { String setupID; int projectID; diff --git a/lib/models/patient/vital_sign_res_model.dart b/lib/models/patient/vital_sign_res_model.dart index 70aa135b..6066e4b0 100644 --- a/lib/models/patient/vital_sign_res_model.dart +++ b/lib/models/patient/vital_sign_res_model.dart @@ -1,3 +1,10 @@ +/* + *@author: Elham Rababah + *@Date:6/5/2020 + *@param: + *@return:VitalSignResModel + *@desc: VitalSignResModel class + */ class VitalSignResModel { var transNo; var projectID; diff --git a/lib/providers/patients_provider.dart b/lib/providers/patients_provider.dart index bf22e565..0b63f598 100644 --- a/lib/providers/patients_provider.dart +++ b/lib/providers/patients_provider.dart @@ -44,7 +44,7 @@ class PatientsProvider with ChangeNotifier { // var srvicePatiant = ["GetMyOutPatient", "GetMyInPatient", "GtMyDischargePatient","GtMyReferredPatient","GtMyDischargeReferralPatient","GtMyTomorrowPatient","GtMyReferralPatient"]; // print("a=SERVICES_PATIANT[patientType]========='=======a"); int val = int.parse(patientType); - final url ="https://uat.hmgwebservices.com/Services/DoctorApplication.svc/REST/"+ SERVICES_PATIANT[val];///"https://uat.hmgwebservices.com/Services/Doctors.svc/REST/"; + final url =BASE_URL+"DoctorApplication.svc/REST/"+ SERVICES_PATIANT[val];///"https://uat.hmgwebservices.com/Services/Doctors.svc/REST/"; //BASE_URL + 'DoctorApplication.svc/REST/' + SERVICES_PATIANT[val]; // print("a===========$url=======a"); diff --git a/lib/routes.dart b/lib/routes.dart index e58f3d4d..1cf0901a 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -40,10 +40,10 @@ const String PHARMACIES_LIST = 'medicine/pharmacies-list'; const String MESSAGES = 'messages'; const String SERVICES = 'services'; const String SETTINGS = 'settings'; -const String VITAL_SIGN = 'vital-sign'; -const String LAB_ORDERS = 'lab_orders'; -const String PRESCRIPTIONS = 'Prescription'; -const String RADIOLOGY = 'Radiology'; +const String VITAL_SIGN = 'patients/vital-sign'; +const String LAB_ORDERS = 'patients/lab_orders'; +const String PRESCRIPTIONS = 'patients/prescription'; +const String RADIOLOGY = 'patients/radiology'; var routes = { diff --git a/lib/screens/patients/patients_screen.dart b/lib/screens/patients/patients_screen.dart index fc2eb3d6..979c4158 100644 --- a/lib/screens/patients/patients_screen.dart +++ b/lib/screens/patients/patients_screen.dart @@ -77,7 +77,6 @@ class _PatientsScreenState extends State { if (_isInit) { PatientsProvider patientsProv = Provider.of(context); patientsProv.getPatientList(patient, patientType).then((res) { - print('List_MyInPatient${(res['List_MyInPatient'])}'); setState(() { int val2 = int.parse(patientType); litems = res[SERVICES_PATIANT2[val2]]; From 8594f1a4982a4aa05aeb194ae4932b6bee4ef6c0 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Wed, 6 May 2020 16:01:25 +0300 Subject: [PATCH 03/14] change the color desing in profile --- .../profile/lab_result/lab_orders_screen.dart | 19 +++++++++++------- .../prescriptions/prescriptions_screen.dart | 20 +++++++++++-------- .../profile/radiology/radiology_screen.dart | 14 ++++++++----- .../profile/vital_sign/vital_sign_screen.dart | 18 ++++++++++------- 4 files changed, 44 insertions(+), 27 deletions(-) diff --git a/lib/screens/patients/profile/lab_result/lab_orders_screen.dart b/lib/screens/patients/profile/lab_result/lab_orders_screen.dart index c8364296..d26ab4c7 100644 --- a/lib/screens/patients/profile/lab_result/lab_orders_screen.dart +++ b/lib/screens/patients/profile/lab_result/lab_orders_screen.dart @@ -108,9 +108,11 @@ class _LabOrdersScreenState extends State { children: [ Row( children: [ - ProfileImageWidget(url:patientsProv - .patientLabResultOrdersList[index] - .doctorImageURL), + ProfileImageWidget( + url: patientsProv + .patientLabResultOrdersList[ + index] + .doctorImageURL), Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( @@ -123,15 +125,18 @@ class _LabOrdersScreenState extends State { '${patientsProv.patientLabResultOrdersList[index].doctorName}', fontSize: 2.5 * SizeConfig.textMultiplier, + fontWeight: FontWeight.bold, ), SizedBox( height: 8, ), AppText( - ' ${patientsProv.patientLabResultOrdersList[index].clinicName}', - fontSize: 2.5 * - SizeConfig - .textMultiplier), + ' ${patientsProv.patientLabResultOrdersList[index].clinicName}', + fontSize: 2 * + SizeConfig.textMultiplier, + color: Theme.of(context) + .primaryColor, + ), SizedBox( height: 8, ), diff --git a/lib/screens/patients/profile/prescriptions/prescriptions_screen.dart b/lib/screens/patients/profile/prescriptions/prescriptions_screen.dart index 061bf648..47fff706 100644 --- a/lib/screens/patients/profile/prescriptions/prescriptions_screen.dart +++ b/lib/screens/patients/profile/prescriptions/prescriptions_screen.dart @@ -55,8 +55,7 @@ class _PrescriptionScreenState extends State { tokenID: token, patientTypeID: patient.patientType, languageID: 2, - setupID: 0 - ); + setupID: 0); patientsProv.getPatientPrescriptions(prescriptionReqModel.toJson()); } @@ -99,7 +98,8 @@ class _PrescriptionScreenState extends State { SizeConfig.realScreenWidth * 0.05, 0), child: ListView.builder( - itemCount: patientsProv.patientPrescriptionsList.length, + itemCount: + patientsProv.patientPrescriptionsList.length, itemBuilder: (BuildContext ctxt, int index) { return InkWell( child: CardWithBgWidget( @@ -108,9 +108,10 @@ class _PrescriptionScreenState extends State { children: [ Row( children: [ - ProfileImageWidget(url:patientsProv - .patientPrescriptionsList[index] - .doctorImageURL), + ProfileImageWidget( + url: patientsProv + .patientPrescriptionsList[index] + .doctorImageURL), Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( @@ -123,15 +124,18 @@ class _PrescriptionScreenState extends State { '${patientsProv.patientPrescriptionsList[index].doctorName}', fontSize: 2.5 * SizeConfig.textMultiplier, + fontWeight: FontWeight.bold, ), SizedBox( height: 8, ), AppText( ' ${patientsProv.patientPrescriptionsList[index].clinicDescription}', - fontSize: 2.5 * + fontSize: 2 * SizeConfig - .textMultiplier), + .textMultiplier, + color: Theme.of(context) + .primaryColor), SizedBox( height: 8, ), diff --git a/lib/screens/patients/profile/radiology/radiology_screen.dart b/lib/screens/patients/profile/radiology/radiology_screen.dart index a55c2704..8b48e88c 100644 --- a/lib/screens/patients/profile/radiology/radiology_screen.dart +++ b/lib/screens/patients/profile/radiology/radiology_screen.dart @@ -123,23 +123,27 @@ class _RadiologyScreenState extends State { '${patientsProv.patientRadiologyList[index].doctorName}', fontSize: 2.5 * SizeConfig.textMultiplier, + fontWeight: FontWeight.bold ), SizedBox( height: 8, ), AppText( 'Invoice No:${patientsProv.patientRadiologyList[index].invoiceNo}', - fontSize: 2.5 * + fontSize: 2 * SizeConfig.textMultiplier, + ), SizedBox( height: 8, ), AppText( - ' ${patientsProv.patientRadiologyList[index].clinicName}', - fontSize: 2.5 * - SizeConfig - .textMultiplier), + ' ${patientsProv.patientRadiologyList[index].clinicName}', + fontSize: 2 * + SizeConfig.textMultiplier, + color: Theme.of(context) + .primaryColor, + ), SizedBox( height: 8, ), diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_screen.dart index da604792..c5acfeb6 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_screen.dart @@ -109,9 +109,10 @@ class _VitalSignScreenState extends State { children: [ Row( children: [ - ProfileImageWidget(url:patientsProv - .patientVitalSignList[index] - .doctorImageURL), + ProfileImageWidget( + url: patientsProv + .patientVitalSignList[index] + .doctorImageURL), Expanded( child: Padding( padding: const EdgeInsets.fromLTRB( @@ -124,15 +125,18 @@ class _VitalSignScreenState extends State { '${patientsProv.patientVitalSignList[index].doctorName}', fontSize: 2.5 * SizeConfig.textMultiplier, + fontWeight: FontWeight.bold, ), SizedBox( height: 8, ), AppText( - ' ${patientsProv.patientVitalSignList[index].clinicName}', - fontSize: 2.5 * - SizeConfig - .textMultiplier), + ' ${patientsProv.patientVitalSignList[index].clinicName}', + fontSize: 2 * + SizeConfig.textMultiplier, + color: Theme.of(context) + .primaryColor, + ), SizedBox( height: 8, ), From cc929ba4a5809082769abb6f840dac819933a025 Mon Sep 17 00:00:00 2001 From: her_username Date: Wed, 6 May 2020 17:06:01 +0300 Subject: [PATCH 04/14] update Localizations --- lib/config/shared_pref_kay.dart | 3 +- lib/main.dart | 38 +++++++++---- ...orReply.dart => request_doctor_reply.dart} | 0 ...estSchedule.dart => request_schedule.dart} | 0 lib/providers/doctor_reply_provider.dart | 2 +- lib/providers/projects_provider.dart | 45 ++++++++++++++- lib/providers/schedule_provider.dart | 3 +- lib/routes.dart | 2 +- lib/screens/dashboard_screen.dart | 9 ++- lib/screens/settings/settings_screen.dart | 57 ++++++++++++++++++- lib/util/translations_delegate_base.dart | 48 ++++++++++++++++ pubspec.lock | 5 ++ pubspec.yaml | 2 + 13 files changed, 192 insertions(+), 22 deletions(-) rename lib/models/{RequestDoctorReply.dart => request_doctor_reply.dart} (100%) rename lib/models/{RequestSchedule.dart => request_schedule.dart} (100%) create mode 100644 lib/util/translations_delegate_base.dart diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart index 3fe1f22d..75e39bb1 100644 --- a/lib/config/shared_pref_kay.dart +++ b/lib/config/shared_pref_kay.dart @@ -1,3 +1,4 @@ final TOKEN = 'token'; final PROJECT_ID="projectID"; -final SLECTED_PATIENT_TYPE="slectedPatientType"; \ No newline at end of file +final SLECTED_PATIENT_TYPE="slectedPatientType"; +final APP_Language = "Language"; \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index a205b379..cc9900ce 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,6 @@ +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; @@ -24,18 +26,30 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (context) => AuthProvider()), ChangeNotifierProvider(create: (context) => ProjectsProvider()), ], - child: MaterialApp( - showSemanticsDebugger: false, - title: 'Flutter Demo', - theme: ThemeData( - primarySwatch: Colors.blue, - primaryColor: Hexcolor('#B8382C'), - buttonColor: Hexcolor('#B8382C'), - fontFamily: 'WorkSans', - ), - initialRoute: INIT_ROUTE, - routes: routes, - debugShowCheckedModeBanner: false, + child: Consumer( + builder: (context,projectsProvider,child) => MaterialApp( + showSemanticsDebugger: false, + title: 'Flutter Demo', + locale: projectsProvider.appLocal, + localizationsDelegates: [ + TranslationBaseDelegate(), + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ], + supportedLocales: [ + const Locale('ar', ''), // Arabic + const Locale('en', ''), // English + ], + theme: ThemeData( + primarySwatch: Colors.blue, + primaryColor: Hexcolor('#B8382C'), + buttonColor: Hexcolor('#B8382C'), + fontFamily: 'WorkSans', + ), + initialRoute: INIT_ROUTE, + routes: routes, + debugShowCheckedModeBanner: false, + ) ), ); }); diff --git a/lib/models/RequestDoctorReply.dart b/lib/models/request_doctor_reply.dart similarity index 100% rename from lib/models/RequestDoctorReply.dart rename to lib/models/request_doctor_reply.dart diff --git a/lib/models/RequestSchedule.dart b/lib/models/request_schedule.dart similarity index 100% rename from lib/models/RequestSchedule.dart rename to lib/models/request_schedule.dart diff --git a/lib/providers/doctor_reply_provider.dart b/lib/providers/doctor_reply_provider.dart index 1c977185..b67cba47 100644 --- a/lib/providers/doctor_reply_provider.dart +++ b/lib/providers/doctor_reply_provider.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:doctor_app_flutter/config/config.dart'; -import 'package:doctor_app_flutter/models/RequestDoctorReply.dart'; +import 'package:doctor_app_flutter/models/request_doctor_reply.dart'; import 'package:doctor_app_flutter/models/list_gt_my_pationents_question_model.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:flutter/cupertino.dart'; diff --git a/lib/providers/projects_provider.dart b/lib/providers/projects_provider.dart index 62debed6..983b6351 100644 --- a/lib/providers/projects_provider.dart +++ b/lib/providers/projects_provider.dart @@ -1,18 +1,59 @@ import 'dart:convert'; import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; +import 'package:doctor_app_flutter/providers/schedule_provider.dart'; +import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; +import 'package:provider/provider.dart'; import '../interceptor/http_interceptor.dart'; import 'package:flutter/cupertino.dart'; import 'package:http/http.dart'; import 'package:http_interceptor/http_client_with_interceptor.dart'; -const GET_PROJECTS = - BASE_URL+'Lists.svc/REST/GetProjectForDoctorAPP'; +const GET_PROJECTS = BASE_URL + 'Lists.svc/REST/GetProjectForDoctorAPP'; class ProjectsProvider with ChangeNotifier { + DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); + Locale _appLocale; + String currentLanguage = 'ar'; + bool _isArabic = false; + + Locale get appLocal => _appLocale; + + bool get isArabic => _isArabic; + + ProjectsProvider() { + loadSharedPrefLan(); + } + + void loadSharedPrefLan() async { + currentLanguage = await sharedPref.getString(APP_Language); + _appLocale = Locale(currentLanguage ?? 'ar'); + _isArabic = currentLanguage != null + ? currentLanguage == 'ar' ? true : false + : false; + notifyListeners(); + } + + void changeDirection(String lan) { + if (lan != "en" && currentLanguage != lan) { + _appLocale = Locale("ar"); + _isArabic = true; + currentLanguage = 'ar'; + sharedPref.setString(APP_Language, 'ar'); + } else if (lan != "ar" && currentLanguage != lan) { + _appLocale = Locale("en"); + _isArabic = false; + currentLanguage = 'en'; + sharedPref.setString(APP_Language, 'en'); + } + notifyListeners(); + } + Client client = HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]); + Future getProjectsList() async { const url = GET_PROJECTS; var info = { diff --git a/lib/providers/schedule_provider.dart b/lib/providers/schedule_provider.dart index 14bc4571..edd880d2 100644 --- a/lib/providers/schedule_provider.dart +++ b/lib/providers/schedule_provider.dart @@ -8,7 +8,7 @@ import 'package:http_interceptor/http_client_with_interceptor.dart'; import '../interceptor/http_interceptor.dart'; import '../models/list_doctor_working_hours_table_model.dart'; -import '../models/RequestSchedule.dart'; +import '../models/request_schedule.dart'; class ScheduleProvider with ChangeNotifier { Client client = @@ -27,6 +27,7 @@ class ScheduleProvider with ChangeNotifier { getDoctorSchedule() async { const url = BASE_URL + 'Doctors.svc/REST/GetDoctorWorkingHoursTable'; try { + if (await Helpers.checkConnection()) { final response = await client.post(url, body: json.encode(requestSchedule.toJson())); final int statusCode = response.statusCode; diff --git a/lib/routes.dart b/lib/routes.dart index e58f3d4d..ae77d217 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -21,7 +21,7 @@ import './screens/profile_screen.dart'; import './screens/settings/settings_screen.dart'; import 'screens/doctor/doctor_reply_screen.dart'; -const String INIT_ROUTE = LOGIN; +const String INIT_ROUTE = HOME; const String HOME = '/'; const String LOGIN = 'login'; const String PROFILE = 'profile'; diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index aade7083..b650c611 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -1,7 +1,9 @@ import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/providers/doctor_reply_provider.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart'; +import 'package:doctor_app_flutter/providers/projects_provider.dart'; import 'package:doctor_app_flutter/screens/medicine/medicine_search_screen.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:provider/provider.dart'; import '../routes.dart'; @@ -25,10 +27,13 @@ class DashboardScreen extends StatefulWidget { } class _DashboardScreenState extends State { + + ProjectsProvider projectsProvider; @override Widget build(BuildContext context) { + projectsProvider = Provider.of(context); return AppScaffold( - appBarTitle: 'Home', + appBarTitle: TranslationBase.of(context).dashboardScreenToolbarTitle, current: 0, body: Container( child: Column( @@ -206,7 +211,7 @@ class _DashboardScreenState extends State { backgroundColor: Colors.green[200], ), onTap: () { - Navigator.of(context).pushNamed(PATIENT_SEARCH); + Navigator.of(context).pushNamed(PATIENT_SEARCH); }, ), ), diff --git a/lib/screens/settings/settings_screen.dart b/lib/screens/settings/settings_screen.dart index ccb9b588..122ab4ab 100644 --- a/lib/screens/settings/settings_screen.dart +++ b/lib/screens/settings/settings_screen.dart @@ -1,11 +1,64 @@ +import 'package:doctor_app_flutter/providers/projects_provider.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:flutter/material.dart'; +import 'package:hexcolor/hexcolor.dart'; +import 'package:provider/provider.dart'; class SettingsScreen extends StatelessWidget { + + ProjectsProvider projectsProvider; @override Widget build(BuildContext context) { + projectsProvider = Provider.of(context); return AppScaffold( - appBarTitle: "SETTINS", - body: Container(), + appBarTitle: TranslationBase.of(context).settings.toUpperCase(), + body: ListView( + children: [ + AppText(TranslationBase.of(context).language.toUpperCase(),fontSize: 18,margin: 5,fontWeight: FontWeight.bold,), + Container( + margin: EdgeInsets.symmetric(horizontal: 10,vertical: 10), + height: 50, + decoration: BoxDecoration( + border: Border.all(color: Colors.grey[600],width: 2.0), + borderRadius: BorderRadius.circular(8.0) + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(7.0), + child: Row( + children: [ + Expanded( + child: InkWell( + onTap: () { projectsProvider.changeDirection('en'); }, + child: AnimatedContainer( + duration: Duration(milliseconds: 350), + decoration: BoxDecoration( + color: !projectsProvider.isArabic ? Hexcolor('#58434F') : Colors.transparent, + border: Border(right: BorderSide(color: Colors.grey[200], width: 2.0)) + ), + child: Center(child: AppText(TranslationBase.of(context).lanEnglish, color: !projectsProvider.isArabic ? Colors.white : Colors.grey[500])) + ), + ), + ), + Expanded( + child: InkWell( + onTap: (){projectsProvider.changeDirection('ar');}, + child: AnimatedContainer( + duration: Duration(milliseconds: 350), + decoration: BoxDecoration( + color: projectsProvider.isArabic ? Hexcolor('#58434F') : Colors.transparent, + border: Border(right: BorderSide(color: Colors.grey[200], width: 2.0)) + ), + child: Center(child: AppText(TranslationBase.of(context).lanArabic, color: projectsProvider.isArabic ? Colors.white : Colors.grey[500],)) + ), + ), + ) + ], + ), + ), + ) + ], + ), ); } } \ No newline at end of file diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart new file mode 100644 index 00000000..9966f051 --- /dev/null +++ b/lib/util/translations_delegate_base.dart @@ -0,0 +1,48 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart' show SynchronousFuture; +import 'package:flutter/material.dart'; + +class TranslationBase { + TranslationBase(this.locale); + + final Locale locale; + + static TranslationBase of(BuildContext context) { + return Localizations.of(context, TranslationBase); + } + + static Map> _localizedValues = { + 'dashboardScreenToolbarTitle': {'ar': 'الرئيسة', 'en': 'Home'}, + 'settings': {'en': 'Settings', 'ar': 'الاعدادات'}, + 'language': {'en': 'App Language', 'ar': 'لغة التطبيق'}, + 'lanEnglish': {'en': 'English', 'ar': 'English'}, + 'lanArabic': {'en': 'العربية', 'ar': 'العربية'} + }; + + String get dashboardScreenToolbarTitle => _localizedValues['dashboardScreenToolbarTitle'][locale.languageCode]; + + String get settings => _localizedValues['settings'][locale.languageCode]; + + String get language => _localizedValues['language'][locale.languageCode]; + + String get lanEnglish => _localizedValues['lanEnglish'][locale.languageCode]; + + String get lanArabic => _localizedValues['lanArabic'][locale.languageCode]; + +} + +class TranslationBaseDelegate extends LocalizationsDelegate { + const TranslationBaseDelegate(); + + @override + bool isSupported(Locale locale) => ['en', 'ar'].contains(locale.languageCode); + + @override + Future load(Locale locale) { + return SynchronousFuture(TranslationBase(locale)); + } + + @override + bool shouldReload(TranslationBaseDelegate old) => false; +} diff --git a/pubspec.lock b/pubspec.lock index 14612a67..bdaff9da 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -244,6 +244,11 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.4" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" flutter_plugin_android_lifecycle: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 20f3f50a..47f6590e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,6 +20,8 @@ dependencies: flutter: sdk: flutter hexcolor: ^1.0.1 + flutter_localizations: + sdk: flutter flutter_device_type: ^0.2.0 intl: ^0.16.1 http: ^0.12.0+4 From 00bce3403e912eadca237f43057d789ba7dcae04 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Wed, 6 May 2020 22:01:34 +0300 Subject: [PATCH 05/14] first step from the vital details --- lib/routes.dart | 7 +- .../vital_sign/vital_sign_details_screen.dart | 70 +++++++++++++++++++ .../profile/vital_sign/vital_sign_screen.dart | 5 +- .../profile/patient_profile_widget.dart | 33 +-------- .../profile/profile_medical_info_widget.dart | 44 ++++++------ 5 files changed, 105 insertions(+), 54 deletions(-) create mode 100644 lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart diff --git a/lib/routes.dart b/lib/routes.dart index 1cf0901a..dcef9fbe 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -16,6 +16,7 @@ import './screens/patients/profile/lab_result/lab_orders_screen.dart'; import './screens/patients/profile/patient_profile_screen.dart'; import './screens/patients/profile/prescriptions/prescriptions_screen.dart'; import './screens/patients/profile/radiology/radiology_screen.dart'; +import './screens/patients/profile/vital_sign/vital_sign_details_screen.dart'; import './screens/patients/profile/vital_sign/vital_sign_screen.dart'; import './screens/profile_screen.dart'; import './screens/settings/settings_screen.dart'; @@ -44,6 +45,8 @@ const String VITAL_SIGN = 'patients/vital-sign'; const String LAB_ORDERS = 'patients/lab_orders'; const String PRESCRIPTIONS = 'patients/prescription'; const String RADIOLOGY = 'patients/radiology'; +const String VITAL_SIGN_DETAILS = 'patients/vital-sign-details'; + var routes = { @@ -68,5 +71,7 @@ var routes = { SERVICES: (_) => ServicesScreen(), LAB_ORDERS:(_)=>LabOrdersScreen(), PRESCRIPTIONS:(_)=>PrescriptionScreen(), - RADIOLOGY:(_)=>RadiologyScreen() + RADIOLOGY:(_)=>RadiologyScreen(), + VITAL_SIGN_DETAILS:(_)=>VitalSignDetailsScreen(), + }; diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart new file mode 100644 index 00000000..223658b2 --- /dev/null +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart @@ -0,0 +1,70 @@ +import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart'; +import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; +import 'package:flutter/material.dart'; +import 'package:hexcolor/hexcolor.dart'; + +class VitalSignDetailsScreen extends StatelessWidget { + // VitalSignDetailsScreen({Key key, this.vitalSing}) : super(key: key); + VitalSignResModel vitalSing; + String url = "assets/images/"; + final double contWidth = SizeConfig.realScreenWidth * 0.70; + + @override + Widget build(BuildContext context) { + final routeArgs = ModalRoute.of(context).settings.arguments as Map; + vitalSing = routeArgs['vitalSing']; + return AppScaffold( + appBarTitle: "vital Sing ", + body: RoundedContainer( + child: CustomScrollView( + primary: false, + slivers: [ + SliverPadding( + padding: const EdgeInsets.all(10), + sliver: SliverGrid.count( + // childAspectRatio: 200, + crossAxisSpacing: 0, + mainAxisSpacing: 50, + crossAxisCount: 4, + children: [ + CircleAvatarWidget( + des: 'Vital Sign', + url: url + 'heartbeat.png', + + ), + CircleAvatarWidget( + des: 'Vital Sign', + url: url + 'heartbeat.png', + + ), + CircleAvatarWidget( + des: 'Vital Sign', + url: url + 'heartbeat.png', + ), + CircleAvatarWidget( + des: 'Vital Sign', + url: url + 'heartbeat.png', + ), + CircleAvatarWidget( + des: 'Vital Sign', + url: url + 'heartbeat.png', + ), CircleAvatarWidget( + des: 'Vital Sign', + url: url + 'heartbeat.png', + ), CircleAvatarWidget( + des: 'Vital Sign', + url: url + 'heartbeat.png', + ), + ], + ), + ), + ], + ), + // height: 500, + )); + } +} diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_screen.dart index c5acfeb6..570a5aa1 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_screen.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/routes.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -149,7 +150,9 @@ class _VitalSignScreenState extends State { ], ), ), - onTap: () {}, + onTap: () { + Navigator.of(context).pushNamed(VITAL_SIGN_DETAILS,arguments: {'vitalSing':patientsProv.patientVitalSignList[index]}); + }, ); }), ), diff --git a/lib/widgets/patients/profile/patient_profile_widget.dart b/lib/widgets/patients/profile/patient_profile_widget.dart index 72d287b0..4dbcf39b 100644 --- a/lib/widgets/patients/profile/patient_profile_widget.dart +++ b/lib/widgets/patients/profile/patient_profile_widget.dart @@ -15,38 +15,7 @@ import './profile_status_info_widget.dart'; *@desc: Patient Profile Widget */ class PatientProfileWidget extends StatelessWidget { - // Map patient = { - // "ProjectID": 15, - // "ClinicID": null, - // "DoctorID": 70907, - // "PatientID": 3315674, - // "DoctorName": "MOQBIL ABDULLAH AL HODAITHY", - // "DoctorNameN": null, - // "FirstName": "WALEED", - // "MiddleName": "ALI", - // "LastName": "AL-YAZIDI", - // "FirstNameN": null, - // "MiddleNameN": null, - // "LastNameN": null, - // "Gender": 1, - // "DateofBirth": "/Date(534286800000+0300)/", - // "NationalityID": null, - // "MobileNumber": "0500014559", - // "EmailAddress": "unknown@unknown.com", - // "PatientIdentificationNo": "1063236754", - // "NationalityName": "Saudi", - // "NationalityNameN": null, - // "PatientStatusType": null, - // "PatientType": 1, - // "AppointmentDate": "/Date(1587848400000+0300)/", - // "StartTime": "13:00:00", - // "Age": "34 Yr", - // "ClinicDescription": "INTERNAL MEDICINE CLINIC", - // "GenderDescription": "Male", - // "AdmissionDate": "/Date(1587848400000+0300)/", - // "AdmissionNo": "2020008652" - // }; - + PatiantInformtion patient; diff --git a/lib/widgets/patients/profile/profile_medical_info_widget.dart b/lib/widgets/patients/profile/profile_medical_info_widget.dart index 7817e9b0..2a4e001b 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget.dart @@ -79,7 +79,7 @@ class ProfileMedicalInfoWidget extends StatelessWidget { ), InkWell( //RADIOLOGY - onTap: () { + onTap: () { navigator(context, RADIOLOGY); }, child: CircleAvatarWidget( @@ -123,26 +123,30 @@ class CircleAvatarWidget extends StatelessWidget { @override Widget build(BuildContext context) { - return Column( - children: [ - Container( - height: height, - width: width, - decoration: new BoxDecoration( - // color: Colors.green, // border color - shape: BoxShape.circle, - border: Border.all(color: Hexcolor('#B7831A'), width: 1.5)), - child: CircleAvatar( - radius: SizeConfig.imageSizeMultiplier * 12, - child: Image.asset(url), - backgroundColor: Colors.transparent, + return Container( + child: Column( + children: [ + Container( + height: height, + width: width, + // width: 50, + // height: 50, + decoration: new BoxDecoration( + // color: Colors.green, // border color + shape: BoxShape.circle, + border: Border.all(color: Hexcolor('#B7831A'), width: 1.5)), + child: CircleAvatar( + radius: SizeConfig.imageSizeMultiplier * 12, + child: Image.asset(url), + backgroundColor: Colors.transparent, + ), ), - ), - SizedBox( - height: 10, - ), - AppText(des) - ], + SizedBox( + height: 10, + ), + AppText(des) + ], + ), ); } } From 51835c231a7b5285a4c031f2d0b5857132504e58 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Thu, 7 May 2020 00:42:38 +0300 Subject: [PATCH 06/14] improtant fix in SliverGrid --- .../vital_sign/vital_sign_details_screen.dart | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart index 223658b2..cf2676d9 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart @@ -1,11 +1,10 @@ -import 'package:doctor_app_flutter/config/size_config.dart'; -import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart'; -import 'package:doctor_app_flutter/widgets/patients/profile/profile_medical_info_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; -import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; -import 'package:hexcolor/hexcolor.dart'; + +import '../../../../config/size_config.dart'; +import '../../../../models/patient/vital_sign_res_model.dart'; +import '../../../../widgets/patients/profile/profile_medical_info_widget.dart'; +import '../../../../widgets/shared/app_scaffold_widget.dart'; +import '../../../../widgets/shared/rounded_container_widget.dart'; class VitalSignDetailsScreen extends StatelessWidget { // VitalSignDetailsScreen({Key key, this.vitalSing}) : super(key: key); @@ -26,9 +25,9 @@ class VitalSignDetailsScreen extends StatelessWidget { SliverPadding( padding: const EdgeInsets.all(10), sliver: SliverGrid.count( - // childAspectRatio: 200, - crossAxisSpacing: 0, - mainAxisSpacing: 50, + childAspectRatio: 0.6, + crossAxisSpacing: 10, + mainAxisSpacing: 20, crossAxisCount: 4, children: [ CircleAvatarWidget( From cabbf03eec33a9f1ffb59bda3b6c7742d1eef44c Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Thu, 7 May 2020 16:44:45 +0300 Subject: [PATCH 07/14] vital_sign_details --- .../vital_sign/vital_sign_details_screen.dart | 25 ++++++++++--------- .../profile/profile_medical_info_widget.dart | 6 ++++- lib/widgets/shared/app_texts_widget.dart | 22 ++++++++-------- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart index cf2676d9..bf4aad6b 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart @@ -19,43 +19,44 @@ class VitalSignDetailsScreen extends StatelessWidget { return AppScaffold( appBarTitle: "vital Sing ", body: RoundedContainer( + height: SizeConfig.realScreenHeight *0.7, child: CustomScrollView( primary: false, slivers: [ SliverPadding( padding: const EdgeInsets.all(10), sliver: SliverGrid.count( - childAspectRatio: 0.6, + childAspectRatio: 0.7, crossAxisSpacing: 10, - mainAxisSpacing: 20, - crossAxisCount: 4, + mainAxisSpacing: 0, + crossAxisCount: 3, children: [ CircleAvatarWidget( - des: 'Vital Sign', + des: 'Body Measurements', url: url + 'heartbeat.png', + ), CircleAvatarWidget( + des: 'Temperature', + url: url + 'heartbeat.png', ), CircleAvatarWidget( - des: 'Vital Sign', + des: 'Pulse', url: url + 'heartbeat.png', ), CircleAvatarWidget( - des: 'Vital Sign', + des: 'Respiration', url: url + 'heartbeat.png', ), CircleAvatarWidget( - des: 'Vital Sign', + des: 'Blood Pressure', url: url + 'heartbeat.png', ), CircleAvatarWidget( - des: 'Vital Sign', - url: url + 'heartbeat.png', - ), CircleAvatarWidget( - des: 'Vital Sign', + des: 'Oxygenation', url: url + 'heartbeat.png', ), CircleAvatarWidget( - des: 'Vital Sign', + des: 'Pain Scale', url: url + 'heartbeat.png', ), ], diff --git a/lib/widgets/patients/profile/profile_medical_info_widget.dart b/lib/widgets/patients/profile/profile_medical_info_widget.dart index 2a4e001b..5bf83cf0 100644 --- a/lib/widgets/patients/profile/profile_medical_info_widget.dart +++ b/lib/widgets/patients/profile/profile_medical_info_widget.dart @@ -144,7 +144,11 @@ class CircleAvatarWidget extends StatelessWidget { SizedBox( height: 10, ), - AppText(des) + AppText( + des, + fontSize: 2 * SizeConfig.textMultiplier, + textAlign: TextAlign.center, + ) ], ), ); diff --git a/lib/widgets/shared/app_texts_widget.dart b/lib/widgets/shared/app_texts_widget.dart index db4f1b2c..100f9bd9 100644 --- a/lib/widgets/shared/app_texts_widget.dart +++ b/lib/widgets/shared/app_texts_widget.dart @@ -2,7 +2,6 @@ import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - // OWNER : Ibrahim albitar // DATE : 12-04-2020 // DESCRIPTION : Customization for Texts in app @@ -19,6 +18,7 @@ class AppText extends StatefulWidget { final double marginBottom; final double marginLeft; final bool visibility; + final TextAlign textAlign; AppText(this.data, {this.color = Colors.black, @@ -30,7 +30,8 @@ class AppText extends StatefulWidget { this.marginRight = 0, this.marginBottom = 0, this.marginLeft = 0, - this.visibility = true}); + this.visibility = true, + this.textAlign}); @override _AppTextState createState() => _AppTextState(); @@ -39,18 +40,19 @@ class AppText extends StatefulWidget { class _AppTextState extends State { @override Widget build(BuildContext context) { - return Visibility( visible: widget.visibility, - child: Container( - margin: widget.margin != null ? EdgeInsets.all(widget.margin) : EdgeInsets.only( - top: widget.marginTop, - right: widget.marginRight, - bottom: widget.marginBottom, - left: widget.marginLeft - ), + child: Container( + margin: widget.margin != null + ? EdgeInsets.all(widget.margin) + : EdgeInsets.only( + top: widget.marginTop, + right: widget.marginRight, + bottom: widget.marginBottom, + left: widget.marginLeft), child: Text( widget.data, + textAlign: widget.textAlign, style: TextStyle( color: widget.color, fontWeight: widget.fontWeight, From ba1827140f19de188bbe207a67fc828a73049949 Mon Sep 17 00:00:00 2001 From: Amjad Amireh Date: Sun, 10 May 2020 11:39:03 +0300 Subject: [PATCH 08/14] patiant drop dawn --- lib/providers/patients_provider.dart | 10 ++-- pubspec.lock | 84 +++++++++++++++++++++------- 2 files changed, 68 insertions(+), 26 deletions(-) diff --git a/lib/providers/patients_provider.dart b/lib/providers/patients_provider.dart index bf22e565..0c533c52 100644 --- a/lib/providers/patients_provider.dart +++ b/lib/providers/patients_provider.dart @@ -41,12 +41,12 @@ class PatientsProvider with ChangeNotifier { Future getPatientList(PatientModel patient, patientType) async { /* const url = BASE_URL+'DoctorApplication.svc/REST/GetMyInPatient';*/ - // var srvicePatiant = ["GetMyOutPatient", "GetMyInPatient", "GtMyDischargePatient","GtMyReferredPatient","GtMyDischargeReferralPatient","GtMyTomorrowPatient","GtMyReferralPatient"]; - // print("a=SERVICES_PATIANT[patientType]========='=======a"); + int val = int.parse(patientType); - final url ="https://uat.hmgwebservices.com/Services/DoctorApplication.svc/REST/"+ SERVICES_PATIANT[val];///"https://uat.hmgwebservices.com/Services/Doctors.svc/REST/"; - //BASE_URL + 'DoctorApplication.svc/REST/' + SERVICES_PATIANT[val]; - // print("a===========$url=======a"); + //**********Modify url by amjad amireh for patiant type********* + final url = + BASE_URL + 'DoctorApplication.svc/REST/' + SERVICES_PATIANT[val]; + try { final response = await client.post(url, diff --git a/pubspec.lock b/pubspec.lock index 14612a67..0d78e107 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -35,7 +35,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.4.1" + version: "2.4.0" bazel_worker: dependency: transitive description: @@ -49,7 +49,7 @@ packages: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "1.0.5" build: dependency: transitive description: @@ -126,7 +126,7 @@ packages: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.1.3" + version: "1.1.2" checked_yaml: dependency: transitive description: @@ -134,13 +134,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.2" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" code_builder: dependency: transitive description: @@ -154,7 +147,7 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.12" + version: "1.14.11" connectivity: dependency: "direct main" description: @@ -211,13 +204,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.4" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" fixnum: dependency: transitive description: @@ -324,6 +310,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.9.10" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" imei_plugin: dependency: "direct main" description: @@ -373,6 +366,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.11.4" + maps_launcher: + dependency: "direct main" + description: + name: maps_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" matcher: dependency: transitive description: @@ -428,7 +428,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.6.4" pedantic: dependency: transitive description: @@ -443,6 +443,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.1+1" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" platform: dependency: transitive description: @@ -587,7 +594,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.5.5" stack_trace: dependency: transitive description: @@ -629,7 +636,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.15" + version: "0.2.11" timing: dependency: transitive description: @@ -644,6 +651,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.6" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "5.4.5" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+5" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.6" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1+4" vector_math: dependency: transitive description: @@ -665,6 +700,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "3.5.0" yaml: dependency: transitive description: From 3fbc2dabefb597cd161abf9947763aeaf949b245 Mon Sep 17 00:00:00 2001 From: her_username Date: Sun, 10 May 2020 17:53:22 +0300 Subject: [PATCH 09/14] remove i18n package, change the location localized values, change provider name and create new provider --- lib/config/localized_values.dart | 7 +++ lib/config/shared_pref_kay.dart | 2 +- lib/i18n/ar.i18n.dart | 25 -------- lib/i18n/ar.i18n.yaml | 3 - lib/i18n/en.i18n.dart | 25 -------- lib/i18n/en.i18n.yaml | 4 -- lib/main.dart | 12 ++-- lib/providers/Project_provider.dart | 43 +++++++++++++ lib/providers/hospital_provider.dart | 41 ++++++++++++ lib/providers/projects_provider.dart | 77 ----------------------- lib/screens/dashboard_screen.dart | 4 +- lib/screens/settings/settings_screen.dart | 9 +-- lib/util/translations_delegate_base.dart | 19 +++--- lib/widgets/auth/login_form.dart | 4 +- pubspec.lock | 21 ------- pubspec.yaml | 1 - 16 files changed, 115 insertions(+), 182 deletions(-) create mode 100644 lib/config/localized_values.dart delete mode 100644 lib/i18n/ar.i18n.dart delete mode 100644 lib/i18n/ar.i18n.yaml delete mode 100644 lib/i18n/en.i18n.dart delete mode 100644 lib/i18n/en.i18n.yaml create mode 100644 lib/providers/Project_provider.dart create mode 100644 lib/providers/hospital_provider.dart delete mode 100644 lib/providers/projects_provider.dart diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart new file mode 100644 index 00000000..20393d92 --- /dev/null +++ b/lib/config/localized_values.dart @@ -0,0 +1,7 @@ +const Map> localizedValues = { + 'dashboardScreenToolbarTitle': {'ar': 'الرئيسة', 'en': 'Home'}, + 'settings': {'en': 'Settings', 'ar': 'الاعدادات'}, + 'language': {'en': 'App Language', 'ar': 'لغة التطبيق'}, + 'lanEnglish': {'en': 'English', 'ar': 'English'}, + 'lanArabic': {'en': 'العربية', 'ar': 'العربية'} +}; diff --git a/lib/config/shared_pref_kay.dart b/lib/config/shared_pref_kay.dart index 75e39bb1..8a90edf6 100644 --- a/lib/config/shared_pref_kay.dart +++ b/lib/config/shared_pref_kay.dart @@ -1,4 +1,4 @@ final TOKEN = 'token'; final PROJECT_ID="projectID"; final SLECTED_PATIENT_TYPE="slectedPatientType"; -final APP_Language = "Language"; \ No newline at end of file +final APP_Language = "language"; \ No newline at end of file diff --git a/lib/i18n/ar.i18n.dart b/lib/i18n/ar.i18n.dart deleted file mode 100644 index 2b768d19..00000000 --- a/lib/i18n/ar.i18n.dart +++ /dev/null @@ -1,25 +0,0 @@ -// GENERATED FILE, do not edit! -import 'package:i18n/i18n.dart' as i18n; - -String get _languageCode => 'en'; -String get _localeName => 'en'; - -String _plural(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.plural(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); -String _ordinal(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.ordinal(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); -String _cardinal(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.cardinal(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); - -class Ar { - const Ar(); - ButtonAr get button => ButtonAr(this); -} - -class ButtonAr { - final Ar _parent; - const ButtonAr(this._parent); - String get save => "حفظ"; - String get load => "تحميل"; -} - diff --git a/lib/i18n/ar.i18n.yaml b/lib/i18n/ar.i18n.yaml deleted file mode 100644 index c59964df..00000000 --- a/lib/i18n/ar.i18n.yaml +++ /dev/null @@ -1,3 +0,0 @@ -button: - save: حفظ - load: تحميل \ No newline at end of file diff --git a/lib/i18n/en.i18n.dart b/lib/i18n/en.i18n.dart deleted file mode 100644 index 9f06a223..00000000 --- a/lib/i18n/en.i18n.dart +++ /dev/null @@ -1,25 +0,0 @@ -// GENERATED FILE, do not edit! -import 'package:i18n/i18n.dart' as i18n; - -String get _languageCode => 'en'; -String get _localeName => 'en'; - -String _plural(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.plural(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); -String _ordinal(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.ordinal(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); -String _cardinal(int count, {String zero, String one, String two, String few, String many, String other}) => - i18n.cardinal(count, _languageCode, zero:zero, one:one, two:two, few:few, many:many, other:other); - -class En { - const En(); - ButtonEn get button => ButtonEn(this); -} - -class ButtonEn { - final En _parent; - const ButtonEn(this._parent); - String get save => "Save"; - String get load => "Load"; -} - diff --git a/lib/i18n/en.i18n.yaml b/lib/i18n/en.i18n.yaml deleted file mode 100644 index a4c26572..00000000 --- a/lib/i18n/en.i18n.yaml +++ /dev/null @@ -1,4 +0,0 @@ -button: - save: Save - load: Load - diff --git a/lib/main.dart b/lib/main.dart index cc9900ce..7d191bce 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/providers/Project_provider.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; @@ -7,7 +8,7 @@ import 'package:provider/provider.dart'; import './config/size_config.dart'; import './providers/auth_provider.dart'; import './providers/patients_provider.dart'; -import './providers/projects_provider.dart'; +import './providers/hospital_provider.dart'; import './routes.dart'; void main() => runApp(MyApp()); @@ -24,13 +25,14 @@ class MyApp extends StatelessWidget { providers: [ ChangeNotifierProvider(create: (context) => PatientsProvider()), ChangeNotifierProvider(create: (context) => AuthProvider()), - ChangeNotifierProvider(create: (context) => ProjectsProvider()), + ChangeNotifierProvider(create: (context) => HospitalProvider()), + ChangeNotifierProvider(create: (context) => ProjectProvider(),) ], - child: Consumer( - builder: (context,projectsProvider,child) => MaterialApp( + child: Consumer( + builder: (context,projectProvider,child) => MaterialApp( showSemanticsDebugger: false, title: 'Flutter Demo', - locale: projectsProvider.appLocal, + locale: projectProvider.appLocal, localizationsDelegates: [ TranslationBaseDelegate(), GlobalMaterialLocalizations.delegate, diff --git a/lib/providers/Project_provider.dart b/lib/providers/Project_provider.dart new file mode 100644 index 00000000..abf53ea3 --- /dev/null +++ b/lib/providers/Project_provider.dart @@ -0,0 +1,43 @@ +import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; +import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; +import 'package:flutter/cupertino.dart'; + +class ProjectProvider with ChangeNotifier{ + + DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); + Locale _appLocale; + String currentLanguage = 'ar'; + bool _isArabic = false; + + Locale get appLocal => _appLocale; + + bool get isArabic => _isArabic; + + ProjectProvider(){ + loadSharedPrefLanguage (); + } + void loadSharedPrefLanguage() async { + currentLanguage = await sharedPref.getString(APP_Language); + _appLocale = Locale(currentLanguage ?? 'ar'); + _isArabic = currentLanguage != null + ? currentLanguage == 'ar' ? true : false + : false; + notifyListeners(); + } + + void changeLanguage(String lan) { + if (lan != "en" && currentLanguage != lan) { + _appLocale = Locale("ar"); + _isArabic = true; + currentLanguage = 'ar'; + sharedPref.setString(APP_Language, 'ar'); + } else if (lan != "ar" && currentLanguage != lan) { + _appLocale = Locale("en"); + _isArabic = false; + currentLanguage = 'en'; + sharedPref.setString(APP_Language, 'en'); + } + notifyListeners(); + } + +} \ No newline at end of file diff --git a/lib/providers/hospital_provider.dart b/lib/providers/hospital_provider.dart new file mode 100644 index 00000000..005a53ac --- /dev/null +++ b/lib/providers/hospital_provider.dart @@ -0,0 +1,41 @@ +import 'dart:convert'; + +import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; +import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; + +import '../interceptor/http_interceptor.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; +import 'package:http_interceptor/http_client_with_interceptor.dart'; + +const GET_PROJECTS = BASE_URL + 'Lists.svc/REST/GetProjectForDoctorAPP'; + +class HospitalProvider with ChangeNotifier { + + + + Client client = + HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]); + + Future getProjectsList() async { + const url = GET_PROJECTS; + var info = { + "LanguageID": 2, + "stamp": "2020-02-26T13:51:44.111Z", + "IPAdress": "11.11.11.11", + "VersionID": 1.2, + "Channel": 9, + "TokenID": "", + "SessionID": "i1UJwCTSqt", + "IsLoginForDoctorApp": true + }; + try { + final response = await client.post(url, body: json.encode(info)); + return Future.value(json.decode(response.body)); + } catch (error) { + throw error; + // print('error'); + } + } +} diff --git a/lib/providers/projects_provider.dart b/lib/providers/projects_provider.dart deleted file mode 100644 index 983b6351..00000000 --- a/lib/providers/projects_provider.dart +++ /dev/null @@ -1,77 +0,0 @@ -import 'dart:convert'; - -import 'package:doctor_app_flutter/config/config.dart'; -import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; -import 'package:doctor_app_flutter/providers/schedule_provider.dart'; -import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; -import 'package:provider/provider.dart'; - -import '../interceptor/http_interceptor.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart'; -import 'package:http_interceptor/http_client_with_interceptor.dart'; - -const GET_PROJECTS = BASE_URL + 'Lists.svc/REST/GetProjectForDoctorAPP'; - -class ProjectsProvider with ChangeNotifier { - DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); - Locale _appLocale; - String currentLanguage = 'ar'; - bool _isArabic = false; - - Locale get appLocal => _appLocale; - - bool get isArabic => _isArabic; - - ProjectsProvider() { - loadSharedPrefLan(); - } - - void loadSharedPrefLan() async { - currentLanguage = await sharedPref.getString(APP_Language); - _appLocale = Locale(currentLanguage ?? 'ar'); - _isArabic = currentLanguage != null - ? currentLanguage == 'ar' ? true : false - : false; - notifyListeners(); - } - - void changeDirection(String lan) { - if (lan != "en" && currentLanguage != lan) { - _appLocale = Locale("ar"); - _isArabic = true; - currentLanguage = 'ar'; - sharedPref.setString(APP_Language, 'ar'); - } else if (lan != "ar" && currentLanguage != lan) { - _appLocale = Locale("en"); - _isArabic = false; - currentLanguage = 'en'; - sharedPref.setString(APP_Language, 'en'); - } - notifyListeners(); - } - - Client client = - HttpClientWithInterceptor.build(interceptors: [HttpInterceptor()]); - - Future getProjectsList() async { - const url = GET_PROJECTS; - var info = { - "LanguageID": 2, - "stamp": "2020-02-26T13:51:44.111Z", - "IPAdress": "11.11.11.11", - "VersionID": 1.2, - "Channel": 9, - "TokenID": "", - "SessionID": "i1UJwCTSqt", - "IsLoginForDoctorApp": true - }; - try { - final response = await client.post(url, body: json.encode(info)); - return Future.value(json.decode(response.body)); - } catch (error) { - throw error; - // print('error'); - } - } -} diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index b650c611..97e5158f 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -1,7 +1,7 @@ import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/providers/doctor_reply_provider.dart'; import 'package:doctor_app_flutter/providers/medicine_provider.dart'; -import 'package:doctor_app_flutter/providers/projects_provider.dart'; +import 'package:doctor_app_flutter/providers/hospital_provider.dart'; import 'package:doctor_app_flutter/screens/medicine/medicine_search_screen.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; @@ -28,7 +28,7 @@ class DashboardScreen extends StatefulWidget { class _DashboardScreenState extends State { - ProjectsProvider projectsProvider; + HospitalProvider projectsProvider; @override Widget build(BuildContext context) { projectsProvider = Provider.of(context); diff --git a/lib/screens/settings/settings_screen.dart b/lib/screens/settings/settings_screen.dart index 122ab4ab..b9ec86ce 100644 --- a/lib/screens/settings/settings_screen.dart +++ b/lib/screens/settings/settings_screen.dart @@ -1,4 +1,5 @@ -import 'package:doctor_app_flutter/providers/projects_provider.dart'; +import 'package:doctor_app_flutter/providers/Project_provider.dart'; +import 'package:doctor_app_flutter/providers/hospital_provider.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; @@ -7,7 +8,7 @@ import 'package:hexcolor/hexcolor.dart'; import 'package:provider/provider.dart'; class SettingsScreen extends StatelessWidget { - ProjectsProvider projectsProvider; + ProjectProvider projectsProvider; @override Widget build(BuildContext context) { projectsProvider = Provider.of(context); @@ -29,7 +30,7 @@ class SettingsScreen extends StatelessWidget { children: [ Expanded( child: InkWell( - onTap: () { projectsProvider.changeDirection('en'); }, + onTap: () { projectsProvider.changeLanguage('en'); }, child: AnimatedContainer( duration: Duration(milliseconds: 350), decoration: BoxDecoration( @@ -42,7 +43,7 @@ class SettingsScreen extends StatelessWidget { ), Expanded( child: InkWell( - onTap: (){projectsProvider.changeDirection('ar');}, + onTap: (){projectsProvider.changeLanguage('ar');}, child: AnimatedContainer( duration: Duration(milliseconds: 350), decoration: BoxDecoration( diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index 9966f051..1af735a1 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:doctor_app_flutter/config/localized_values.dart'; import 'package:flutter/foundation.dart' show SynchronousFuture; import 'package:flutter/material.dart'; @@ -12,23 +13,17 @@ class TranslationBase { return Localizations.of(context, TranslationBase); } - static Map> _localizedValues = { - 'dashboardScreenToolbarTitle': {'ar': 'الرئيسة', 'en': 'Home'}, - 'settings': {'en': 'Settings', 'ar': 'الاعدادات'}, - 'language': {'en': 'App Language', 'ar': 'لغة التطبيق'}, - 'lanEnglish': {'en': 'English', 'ar': 'English'}, - 'lanArabic': {'en': 'العربية', 'ar': 'العربية'} - }; - String get dashboardScreenToolbarTitle => _localizedValues['dashboardScreenToolbarTitle'][locale.languageCode]; - String get settings => _localizedValues['settings'][locale.languageCode]; + String get dashboardScreenToolbarTitle => localizedValues['dashboardScreenToolbarTitle'][locale.languageCode]; - String get language => _localizedValues['language'][locale.languageCode]; + String get settings => localizedValues['settings'][locale.languageCode]; - String get lanEnglish => _localizedValues['lanEnglish'][locale.languageCode]; + String get language => localizedValues['language'][locale.languageCode]; - String get lanArabic => _localizedValues['lanArabic'][locale.languageCode]; + String get lanEnglish => localizedValues['lanEnglish'][locale.languageCode]; + + String get lanArabic => localizedValues['lanArabic'][locale.languageCode]; } diff --git a/lib/widgets/auth/login_form.dart b/lib/widgets/auth/login_form.dart index f20cb0f3..43daa219 100644 --- a/lib/widgets/auth/login_form.dart +++ b/lib/widgets/auth/login_form.dart @@ -10,7 +10,7 @@ import '../../config/shared_pref_kay.dart'; import '../../config/size_config.dart'; import '../../models/user_model.dart'; import '../../providers/auth_provider.dart'; -import '../../providers/projects_provider.dart'; +import '../../providers/hospital_provider.dart'; import '../../routes.dart'; import '../../util/dr_app_shared_pref.dart'; import '../../util/dr_app_toast_msg.dart'; @@ -290,7 +290,7 @@ class _LoginFormState extends State { } getProjectsList() { - ProjectsProvider projectsProv = Provider.of(context); + HospitalProvider projectsProv = Provider.of(context); projectsProv.getProjectsList().then((res) { if (res['MessageStatus'] == 1) { setState(() { diff --git a/pubspec.lock b/pubspec.lock index bdaff9da..e5495a16 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -322,13 +322,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.1.4" - i18n: - dependency: "direct main" - description: - name: i18n - url: "https://pub.dartlang.org" - source: hosted - version: "0.9.10" imei_plugin: dependency: "direct main" description: @@ -504,13 +497,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.5" - quick_log: - dependency: transitive - description: - name: quick_log - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.0" quiver: dependency: transitive description: @@ -518,13 +504,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.5" - rxdart: - dependency: transitive - description: - name: rxdart - url: "https://pub.dartlang.org" - source: hosted - version: "0.23.1" scratch_space: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 47f6590e..f4867698 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -26,7 +26,6 @@ dependencies: intl: ^0.16.1 http: ^0.12.0+4 provider: ^4.0.5+1 - i18n: any shared_preferences: ^0.5.6+3 imei_plugin: ^1.1.6 flutter_flexible_toast: ^0.1.4 From 216374aed26e20aff5ea13b0f8306f17dc7f9ca5 Mon Sep 17 00:00:00 2001 From: her_username Date: Sun, 10 May 2020 17:57:36 +0300 Subject: [PATCH 10/14] change class name and change init route --- lib/main.dart | 2 +- ...ct_provider.dart => project_provider.dart} | 0 lib/routes.dart | 2 +- lib/screens/settings/settings_screen.dart | 2 +- pubspec.lock | 35 +++++++++++++++++++ 5 files changed, 38 insertions(+), 3 deletions(-) rename lib/providers/{Project_provider.dart => project_provider.dart} (100%) diff --git a/lib/main.dart b/lib/main.dart index 7d191bce..869d0b88 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,4 @@ -import 'package:doctor_app_flutter/providers/Project_provider.dart'; +import 'package:doctor_app_flutter/providers/project_provider.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; diff --git a/lib/providers/Project_provider.dart b/lib/providers/project_provider.dart similarity index 100% rename from lib/providers/Project_provider.dart rename to lib/providers/project_provider.dart diff --git a/lib/routes.dart b/lib/routes.dart index 786bb904..dcef9fbe 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -22,7 +22,7 @@ import './screens/profile_screen.dart'; import './screens/settings/settings_screen.dart'; import 'screens/doctor/doctor_reply_screen.dart'; -const String INIT_ROUTE = HOME; +const String INIT_ROUTE = LOGIN; const String HOME = '/'; const String LOGIN = 'login'; const String PROFILE = 'profile'; diff --git a/lib/screens/settings/settings_screen.dart b/lib/screens/settings/settings_screen.dart index b9ec86ce..c205f49d 100644 --- a/lib/screens/settings/settings_screen.dart +++ b/lib/screens/settings/settings_screen.dart @@ -1,4 +1,4 @@ -import 'package:doctor_app_flutter/providers/Project_provider.dart'; +import 'package:doctor_app_flutter/providers/project_provider.dart'; import 'package:doctor_app_flutter/providers/hospital_provider.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; diff --git a/pubspec.lock b/pubspec.lock index e5495a16..4e2d1cde 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -371,6 +371,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.11.4" + maps_launcher: + dependency: "direct main" + description: + name: maps_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" matcher: dependency: transitive description: @@ -628,6 +635,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.6" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "5.4.5" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+5" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.6" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1+4" vector_math: dependency: transitive description: From f3c35758b18305864f87e76edee84c048702b10d Mon Sep 17 00:00:00 2001 From: Amjad Amireh Date: Mon, 11 May 2020 00:18:05 +0300 Subject: [PATCH 11/14] modify comment --- lib/providers/patients_provider.dart | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/lib/providers/patients_provider.dart b/lib/providers/patients_provider.dart index 0f9dff6f..afe24758 100644 --- a/lib/providers/patients_provider.dart +++ b/lib/providers/patients_provider.dart @@ -43,16 +43,11 @@ class PatientsProvider with ChangeNotifier { BASE_URL+'DoctorApplication.svc/REST/GetMyInPatient';*/ int val = int.parse(patientType); -<<<<<<< HEAD //**********Modify url by amjad amireh for patiant type********* - final url = - BASE_URL + 'DoctorApplication.svc/REST/' + SERVICES_PATIANT[val]; + -======= - final url =BASE_URL+"DoctorApplication.svc/REST/"+ SERVICES_PATIANT[val];///"https://uat.hmgwebservices.com/Services/Doctors.svc/REST/"; - //BASE_URL + 'DoctorApplication.svc/REST/' + SERVICES_PATIANT[val]; + final url =BASE_URL+"DoctorApplication.svc/REST/"+ SERVICES_PATIANT[val]; // print("a===========$url=======a"); ->>>>>>> 8d3aa791dfc0074fddba54520ff4c13f5aa02bad try { final response = await client.post(url, From 142c8d97e3bdd0498668f74b60955c9b3ee4ff83 Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Mon, 11 May 2020 12:45:53 +0300 Subject: [PATCH 12/14] first step from body measurements --- lib/routes.dart | 23 +-- lib/screens/auth/login_screen.dart | 2 +- .../vital_sign/body_measurements_screen.dart | 143 ++++++++++++++++++ .../vital_sign/vital_sign_details_screen.dart | 24 +-- 4 files changed, 172 insertions(+), 20 deletions(-) create mode 100644 lib/screens/patients/profile/vital_sign/body_measurements_screen.dart diff --git a/lib/routes.dart b/lib/routes.dart index dcef9fbe..f2f5f6bb 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -1,3 +1,5 @@ +import './screens/patients/profile/vital_sign/body_measurements_screen.dart'; + import './screens/QR_reader_screen.dart'; import './screens/auth/change_password_screen.dart'; import './screens/auth/login_screen.dart'; @@ -46,8 +48,7 @@ const String LAB_ORDERS = 'patients/lab_orders'; const String PRESCRIPTIONS = 'patients/prescription'; const String RADIOLOGY = 'patients/radiology'; const String VITAL_SIGN_DETAILS = 'patients/vital-sign-details'; - - +const String BODY_MEASUREMENTS = 'patients/body-measurements'; var routes = { HOME: (_) => DashboardScreen(), @@ -63,15 +64,17 @@ var routes = { SETTINGS: (_) => SettingsScreen(), CHANGE_PASSWORD: (_) => ChangePasswordScreen(), VERIFY_ACCOUNT: (_) => VerifyAccountScreen(), - VERIFICATION_METHODS:(_)=> VerificationMethodsScreen(), - PATIENTS_PROFILE:(_)=> PatientProfileScreen(), - PHARMACIES_LIST: (_) => PharmaciesListScreen(itemID: null,), + VERIFICATION_METHODS: (_) => VerificationMethodsScreen(), + PATIENTS_PROFILE: (_) => PatientProfileScreen(), + PHARMACIES_LIST: (_) => PharmaciesListScreen( + itemID: null, + ), VITAL_SIGN: (_) => VitalSignScreen(), MESSAGES: (_) => MessagesScreen(), SERVICES: (_) => ServicesScreen(), - LAB_ORDERS:(_)=>LabOrdersScreen(), - PRESCRIPTIONS:(_)=>PrescriptionScreen(), - RADIOLOGY:(_)=>RadiologyScreen(), - VITAL_SIGN_DETAILS:(_)=>VitalSignDetailsScreen(), - + LAB_ORDERS: (_) => LabOrdersScreen(), + PRESCRIPTIONS: (_) => PrescriptionScreen(), + RADIOLOGY: (_) => RadiologyScreen(), + VITAL_SIGN_DETAILS: (_) => VitalSignDetailsScreen(), + BODY_MEASUREMENTS: (_) => BodyMeasurementsScreen() }; diff --git a/lib/screens/auth/login_screen.dart b/lib/screens/auth/login_screen.dart index c203dae9..d8c45a57 100644 --- a/lib/screens/auth/login_screen.dart +++ b/lib/screens/auth/login_screen.dart @@ -72,7 +72,7 @@ class _LoginsreenState extends State { return Text('Error: ${snapshot.error}'); } else { return Container( - margin: EdgeInsetsDirectional.fromSTEB(30, 0, 0, 30), + margin: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 30), alignment: Alignment.topLeft, child: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/screens/patients/profile/vital_sign/body_measurements_screen.dart b/lib/screens/patients/profile/vital_sign/body_measurements_screen.dart new file mode 100644 index 00000000..bf89edac --- /dev/null +++ b/lib/screens/patients/profile/vital_sign/body_measurements_screen.dart @@ -0,0 +1,143 @@ +import 'package:charts_flutter/flutter.dart' as charts; +import 'package:doctor_app_flutter/config/size_config.dart'; +import 'package:doctor_app_flutter/models/patient/vital_sign_res_model.dart'; +import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; +import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; +import 'package:flutter/material.dart'; + +class BodyMeasurementsScreen extends StatelessWidget { + BodyMeasurementsScreen(); + List vitalList; + @override + Widget build(BuildContext context) { + _seriesData = List>(); + _seriesPieData = List>(); + _seriesLineData = List>(); + _generateData(); + return AppScaffold( + appBarTitle: 'Body Measurements', + body: RoundedContainer( + height: SizeConfig.realScreenHeight*0.4, + child: Padding( + padding: EdgeInsets.all(8.0), + child: Container( + child: Center( + child: Column( + children: [ + Text( + 'Body Mass Index', + style: TextStyle( + fontSize: 24.0, fontWeight: FontWeight.bold), + ), + Expanded( + child: charts.BarChart( + _seriesData, + animate: true, + barGroupingType: charts.BarGroupingType.grouped, + // behaviors: [new charts.SeriesLegend()], + // primaryMeasureAxis: , + animationDuration: Duration(seconds: 5), + ), + ), + ], + ), + ), + ), + ), + ), + ); + } + + List> _seriesData; + List> _seriesPieData; + List> _seriesLineData; + + _generateData() { + var data1 = [ + new Pollution(1980, 'USA', 40), + ]; + + + _seriesData.add( + charts.Series( + domainFn: (Pollution pollution, _) => '', + measureFn: (Pollution pollution, _) => pollution.quantity, + id: '2017', + data: data1, + fillPatternFn: (_, __) => charts.FillPatternType.solid, + fillColorFn: (Pollution pollution, _) => + charts.ColorUtil.fromDartColor(Color(0xff990099)), + ), + ); + _seriesData.add( + charts.Series( + domainFn: (Pollution pollution, _) => '', + measureFn: (Pollution pollution, _) => pollution.quantity, + id: '2017', + data: data1, + fillPatternFn: (_, __) => charts.FillPatternType.solid, + fillColorFn: (Pollution pollution, _) => + charts.ColorUtil.fromDartColor(Color(0xff990099)), + ), + ); + _seriesData.add( + charts.Series( + domainFn: (Pollution pollution, _) => '', + measureFn: (Pollution pollution, _) => pollution.quantity, + id: '2017', + data: data1, + fillPatternFn: (_, __) => charts.FillPatternType.solid, + fillColorFn: (Pollution pollution, _) => + charts.ColorUtil.fromDartColor(Color(0xff990099)), + ), + ); + _seriesData.add( + charts.Series( + domainFn: (Pollution pollution, _) => '', + measureFn: (Pollution pollution, _) => pollution.quantity, + id: '2017', + data: data1, + fillPatternFn: (_, __) => charts.FillPatternType.solid, + fillColorFn: (Pollution pollution, _) => + charts.ColorUtil.fromDartColor(Color(0xff990099)), + ), + ); + _seriesData.add( + charts.Series( + domainFn: (Pollution pollution, _) => '', + measureFn: (Pollution pollution, _) => pollution.quantity, + id: '2017', + data: data1, + fillPatternFn: (_, __) => charts.FillPatternType.solid, + fillColorFn: (Pollution pollution, _) => + charts.ColorUtil.fromDartColor(Color(0xff990099)), + ), + ); + + + + } +} + +class Pollution { + String place; + int year; + int quantity; + + Pollution(this.year, this.place, this.quantity); +} + +class Task { + String task; + double taskvalue; + Color colorval; + + Task(this.task, this.taskvalue, this.colorval); +} + +class Sales { + int yearval; + int salesval; + + Sales(this.yearval, this.salesval); +} diff --git a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart index bf4aad6b..a7155e01 100644 --- a/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart +++ b/lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/routes.dart'; import 'package:flutter/material.dart'; import '../../../../config/size_config.dart'; @@ -10,7 +11,7 @@ class VitalSignDetailsScreen extends StatelessWidget { // VitalSignDetailsScreen({Key key, this.vitalSing}) : super(key: key); VitalSignResModel vitalSing; String url = "assets/images/"; - final double contWidth = SizeConfig.realScreenWidth * 0.70; + final double contWidth = SizeConfig.realScreenWidth * 0.70; @override Widget build(BuildContext context) { @@ -19,7 +20,7 @@ class VitalSignDetailsScreen extends StatelessWidget { return AppScaffold( appBarTitle: "vital Sing ", body: RoundedContainer( - height: SizeConfig.realScreenHeight *0.7, + height: SizeConfig.realScreenHeight * 0.7, child: CustomScrollView( primary: false, slivers: [ @@ -31,18 +32,22 @@ class VitalSignDetailsScreen extends StatelessWidget { mainAxisSpacing: 0, crossAxisCount: 3, children: [ + InkWell( + onTap: (){ + Navigator.of(context).pushNamed(BODY_MEASUREMENTS); + }, + child: CircleAvatarWidget( + des: 'Body Measurements', + url: url + 'heartbeat.png', + ), + ), CircleAvatarWidget( - des: 'Body Measurements', - url: url + 'heartbeat.png', - - ), CircleAvatarWidget( des: 'Temperature', url: url + 'heartbeat.png', ), CircleAvatarWidget( des: 'Pulse', url: url + 'heartbeat.png', - ), CircleAvatarWidget( des: 'Respiration', @@ -52,10 +57,11 @@ class VitalSignDetailsScreen extends StatelessWidget { des: 'Blood Pressure', url: url + 'heartbeat.png', ), - CircleAvatarWidget( + CircleAvatarWidget( des: 'Oxygenation', url: url + 'heartbeat.png', - ), CircleAvatarWidget( + ), + CircleAvatarWidget( des: 'Pain Scale', url: url + 'heartbeat.png', ), From 17ba899b8eaea10049f57efa8a9d1aa207b5769b Mon Sep 17 00:00:00 2001 From: Elham Rababah Date: Mon, 11 May 2020 13:16:17 +0300 Subject: [PATCH 13/14] add chart package to pubspec --- pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/pubspec.yaml b/pubspec.yaml index 00c18525..62c813b2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,6 +35,7 @@ dependencies: connectivity: ^0.4.8+2 maps_launcher: ^1.2.0 url_launcher: ^5.4.5 + charts_flutter: ^0.9.0 From ac4489c452895bda8ec13841a86657c921b599a6 Mon Sep 17 00:00:00 2001 From: Amjad Amireh Date: Mon, 11 May 2020 16:44:32 +0300 Subject: [PATCH 14/14] patiant model modify --- lib/models/patient/patient_model.dart | 96 +++++++++++++++++-- .../patients/patient_search_screen.dart | 30 ++++-- lib/screens/patients/patients_screen.dart | 13 +-- 3 files changed, 119 insertions(+), 20 deletions(-) diff --git a/lib/models/patient/patient_model.dart b/lib/models/patient/patient_model.dart index e49f64ea..93e77c18 100644 --- a/lib/models/patient/patient_model.dart +++ b/lib/models/patient/patient_model.dart @@ -1,8 +1,18 @@ + +/* + *@author:Modified by amjad add getter and setter Amjad Amireh + *@Date:11/5/2020 + *@param: + *@return:PatientsScreen Search textbox filter + + *@desc: + */ class PatientModel { int ProjectID; int ClinicID; int DoctorID; String FirstName; + String MiddleName; String LastName; String PatientMobileNumber; @@ -21,13 +31,87 @@ class PatientModel { bool PatientOutSA; - getFirstName() { - return this.FirstName; - } + int get getProjectID => ProjectID; + + set setProjectID(int ProjectID) => this.ProjectID = ProjectID; + + int get getClinicID => ClinicID; + + set setClinicID(int ClinicID) => this.ClinicID = ClinicID; + + int get getDoctorID => DoctorID; + + set setDoctorID(int DoctorID) => this.DoctorID = DoctorID; + String get getFirstName => FirstName; + + set setFirstName(String FirstName) => this.FirstName = FirstName; + + String get getMiddleName => MiddleName; + + set setMiddleName(String MiddleName) => this.MiddleName = MiddleName; + + String get getLastName => LastName; + + set setLastName(String LastName) => this.LastName = LastName; + + String get getPatientMobileNumber => PatientMobileNumber; + + set setPatientMobileNumber(String PatientMobileNumber) => this.PatientMobileNumber = PatientMobileNumber; + +// String get getPatientIdentificationID => PatientIdentificationID; + +// set setPatientIdentificationID(String PatientIdentificationID) => this.PatientIdentificationID = PatientIdentificationID; + + int get getPatientID => PatientID; + + set setPatientID(int PatientID) => this.PatientID = PatientID; + + String get getFrom => From; + + set setFrom(String From) => this.From = From; + + String get getTo => To; + + set setTo(String To) => this.To = To; + + int get getLanguageID => LanguageID; + + set setLanguageID(int LanguageID) => this.LanguageID = LanguageID; + + String get getStamp => stamp; + + set setStamp(String stamp) => this.stamp = stamp; + + String get getIPAdress => IPAdress; + + set setIPAdress(String IPAdress) => this.IPAdress = IPAdress; + + double get getVersionID => VersionID; + + set setVersionID(double VersionID) => this.VersionID = VersionID; + + int get getChannel => Channel; + + set setChannel(int Channel) => this.Channel = Channel; + + String get getTokenID => TokenID; + + set setTokenID(String TokenID) => this.TokenID = TokenID; + + String get getSessionID => SessionID; + + set setSessionID(String SessionID) => this.SessionID = SessionID; + + bool get getIsLoginForDoctorApp => IsLoginForDoctorApp; + + set setIsLoginForDoctorApp(bool IsLoginForDoctorApp) => this.IsLoginForDoctorApp = IsLoginForDoctorApp; + + bool get getPatientOutSA => PatientOutSA; + + set setPatientOutSA(bool PatientOutSA) => this.PatientOutSA = PatientOutSA; + + - setFirstName( FirstName) { - this.FirstName = FirstName; - } diff --git a/lib/screens/patients/patient_search_screen.dart b/lib/screens/patients/patient_search_screen.dart index 2582310a..4704b564 100644 --- a/lib/screens/patients/patient_search_screen.dart +++ b/lib/screens/patients/patient_search_screen.dart @@ -62,15 +62,32 @@ class _PatientSearchScreenState extends State { // _patientSearchFormValues.TokenID = if (_formKey.currentState.validate()) { -// If all data are correct then save data to out variables - // _formKey.currentState.save(); - sharedPref.setString(TOKEN,'@dm!n'); - sharedPref.setString(SLECTED_PATIENT_TYPE,_selectedType); +//*****If all data are correct then save data to out variables**** + if (_patientSearchFormValues.getFirstName == null || + _patientSearchFormValues.getMiddleName == null || + _patientSearchFormValues.getLastName == null || + _patientSearchFormValues.getPatientMobileNumber == null) { + _patientSearchFormValues.setFirstName = "0"; + _patientSearchFormValues.setLastName = "0"; + _patientSearchFormValues.setMiddleName = "0"; + _patientSearchFormValues.setPatientMobileNumber = "0"; + _patientSearchFormValues.setPatientID = 0; + _patientSearchFormValues.From = "0"; + _patientSearchFormValues.To = "0"; + + //_formKey.currentState.save(); + } else { + _formKey.currentState.save(); + } + // _formKey.currentState.save(); + //*********************************** */ + sharedPref.setString(TOKEN, '@dm!n'); + sharedPref.setString(SLECTED_PATIENT_TYPE, _selectedType); print('_selectedType${_selectedType}'); String token = await sharedPref.getString(TOKEN); int projectID = await sharedPref.getInt(PROJECT_ID); _patientSearchFormValues.TokenID = token; - _patientSearchFormValues.ProjectID = 15;//projectID; + _patientSearchFormValues.ProjectID = 15; //projectID; // print(_patientSearchFormValues.PatientMobileNumber+"dfdfdfddf"); Navigator.of(context).pushNamed(PATIENTS, arguments: { "patientSearchForm": _patientSearchFormValues, @@ -173,7 +190,8 @@ class _PatientSearchScreenState extends State { AppTextFormField( hintText: 'First Name', onSaved: (value) { - _patientSearchFormValues.FirstName = value; + // _patientSearchFormValues.FirstName = value; + _patientSearchFormValues.setFirstName = value; }, // validator: (value) { // return TextValidator().validateName(value); diff --git a/lib/screens/patients/patients_screen.dart b/lib/screens/patients/patients_screen.dart index 979c4158..676f9589 100644 --- a/lib/screens/patients/patients_screen.dart +++ b/lib/screens/patients/patients_screen.dart @@ -285,15 +285,12 @@ class _PatientsScreenState extends State { Container( child: Center( child: - DrAppCircularProgressIndeicator()), + Padding( + padding: const EdgeInsets.fromLTRB(0, 250, 0, 0), + child: DrAppCircularProgressIndeicator(), + )), ), - Container( - child: Text( - "Sorry There is No Data", - style: TextStyle( - color: Theme.of(context).errorColor), - ), - ) + ], ) : Column(