diff --git a/lib/config/config.dart b/lib/config/config.dart index 2bd1256d..1a4b5694 100644 --- a/lib/config/config.dart +++ b/lib/config/config.dart @@ -24,7 +24,7 @@ const GET_PATIENT_LAB_OREDERS = const GET_PRESCRIPTION = 'Patients.svc/REST/GetPrescriptionApptList'; const GET_RADIOLOGY = 'DoctorApplication.svc/REST/GetPatientRadResult'; -var selectedPatientType = 0; +var selectedPatientType = 1; //*********change value to decode json from Dropdown ************ var SERVICES_PATIANT = [ diff --git a/lib/config/localized_values.dart b/lib/config/localized_values.dart index 675d846f..33f184d2 100644 --- a/lib/config/localized_values.dart +++ b/lib/config/localized_values.dart @@ -41,5 +41,19 @@ const Map> localizedValues = { 'inPatient': {'en': 'In-Patient', 'ar': 'االمريض الداخلي'}, 'operations': {'en': 'Operations', 'ar': 'عمليات'}, 'patientServices': {'en': 'Patient Services', 'ar': 'خدمات المرضى'}, - 'familyMedicine': {'en': 'Family Medicine Clinic', 'ar': 'عيادة طب الأسرة'} + 'searchMedicine': {'en': 'Search Medicine', 'ar': 'بحث عن الدواء'}, + 'myReferralPatient': {'en': 'My Referral Patient', 'ar': 'مرضى الاحالة'}, + 'myReferredPatient': {'en': 'My Referred Patient', 'ar': 'مرضاي المحالين'}, + 'firstName': {'en': 'First Name', 'ar': 'الاسم الاول'}, + 'middleName': {'en': 'Middle Name', 'ar': 'اسم الاب'}, + 'lastName': {'en': 'Last Name', 'ar': 'اسم العائلة'}, + 'phoneNumber': {'en': 'Phone Number ', 'ar': 'رقم الجوال'}, + 'patientID': {'en': 'Patient ID', 'ar': 'رقم المريض'}, + 'patientFile': {'en': 'Patient File', 'ar': 'ملف المريض'}, + 'familyMedicine': {'en': 'Family Medicine Clinic', 'ar': 'عيادة طب الأسرة'}, + 'search': {'en': 'Search', 'ar': 'بحث'}, + 'onlyArrivedPatient': { + 'en': 'Only Arrived Patient', + 'ar': 'المريض الذي حضر للموعد' + }, }; diff --git a/lib/main.dart b/lib/main.dart index 470c5d52..d5f65406 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,6 +11,7 @@ import './providers/auth_provider.dart'; import './providers/patients_provider.dart'; import './providers/hospital_provider.dart'; import './routes.dart'; +import 'config/config.dart'; void main() => runApp(MyApp()); @@ -18,6 +19,7 @@ class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { + AppGlobal.CONTEX = context; return LayoutBuilder( builder: (context, constraints) { return OrientationBuilder(builder: (context, orientation) { diff --git a/lib/providers/auth_provider.dart b/lib/providers/auth_provider.dart index e79192ae..415b8d39 100644 --- a/lib/providers/auth_provider.dart +++ b/lib/providers/auth_provider.dart @@ -1,4 +1,6 @@ import 'package:doctor_app_flutter/client/base_app_client.dart'; +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'; import '../models/user_model.dart'; @@ -14,8 +16,41 @@ const SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE = const MEMBER_CHECK_ACTIVATION_CODE_NEW = 'Sentry.svc/REST/MemberCheckActivationCode_New'; const GET_DOC_PROFILES = 'Doctors.svc/REST/GetDocProfiles'; +DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); +enum APP_STATUS { LOADING, UNAUTHENTICATED, AUTHENTICATED } + class AuthProvider with ChangeNotifier { + + bool isLogin= false; + bool isLoading = true; + AuthProvider(){ + getUserAuthentication(); + } + + void getUserAuthentication() async{ + Map profile = await sharedPref.getObj(DOCTOR_PROFILE); + if(profile != null) + { + isLoading = false; + isLogin = true; + } else { + isLoading = false; + isLogin = false; + } + notifyListeners(); + } + APP_STATUS get stutas { + if (isLoading) { + return APP_STATUS.LOADING; + } else{ + if ( this.isLogin) { + return APP_STATUS.AUTHENTICATED; + } else { + return APP_STATUS.UNAUTHENTICATED; + } + } + } Future login(UserModel userInfo) async { try { dynamic localRes; @@ -131,4 +166,6 @@ class AuthProvider with ChangeNotifier { throw error; } } + + } diff --git a/lib/providers/patients_provider.dart b/lib/providers/patients_provider.dart index 6da89e74..2d1f4fe1 100644 --- a/lib/providers/patients_provider.dart +++ b/lib/providers/patients_provider.dart @@ -63,7 +63,7 @@ class PatientsProvider with ChangeNotifier { STPReferralFrequencyRequest(); ClinicByProjectIdRequest _clinicByProjectIdRequest = ClinicByProjectIdRequest(); - ReferToDoctorRequest _referToDoctorRequest = ReferToDoctorRequest(); + ReferToDoctorRequest _referToDoctorRequest; PatiantInformtion _selectedPatient; @@ -486,7 +486,7 @@ class PatientsProvider with ChangeNotifier { *@Date:3/6/2020 *@desc: referToDoctor */ - referToDoctor(context, + referToDoctor(context, {String selectedDoctorID, String selectedClinicID, int admissionNo, @@ -500,56 +500,42 @@ class PatientsProvider with ChangeNotifier { int projectID}) async { setBasicData(); try { - if (await Helpers.checkConnection()) { - String token = await sharedPref.getString(TOKEN); - Map profile = await sharedPref.getObj(DOCTOR_PROFILE); - DoctorProfileModel doctorProfile = - new DoctorProfileModel.fromJson(profile); - int doctorID = doctorProfile.doctorID; - int clinicId = doctorProfile.clinicID; - _referToDoctorRequest = ReferToDoctorRequest( - projectID: projectID, - admissionNo: admissionNo, - roomID: roomID, - referralClinic: selectedClinicID.toString(), - referralDoctor: selectedDoctorID.toString(), - createdBy: doctorID, - editedBy: doctorID, - patientID: patientID, - patientTypeID: patientTypeID, - referringClinic: clinicId, - referringDoctor: doctorID, - referringDoctorRemarks: referringDoctorRemarks, - priority: priority, - frequency: frequency, - extension: extension, - tokenID: token); - - final response = await AppClient.post(PATIENT_REFER_TO_DOCTOR_URL, - body: json.encode(_referToDoctorRequest)); - final int statusCode = response.statusCode; - isLoading = false; - - if (statusCode < 200 || statusCode >= 400 || json == null) { - isError = true; - error = 'Error While Fetching data'; - } else { - var res = json.decode(response.body); - print('$res'); - if (res['MessageStatus'] == 1) { - print('Done : \n $res'); + String token = await sharedPref.getString(TOKEN); + Map profile = await sharedPref.getObj(DOCTOR_PROFILE); + DoctorProfileModel doctorProfile = + new DoctorProfileModel.fromJson(profile); + int doctorID = doctorProfile.doctorID; + int clinicId = doctorProfile.clinicID; + _referToDoctorRequest = ReferToDoctorRequest( + projectID: projectID, + admissionNo: admissionNo, + roomID: roomID, + referralClinic: selectedClinicID.toString(), + referralDoctor: selectedDoctorID.toString(), + createdBy: doctorID, + editedBy: doctorID, + patientID: patientID, + patientTypeID: patientTypeID, + referringClinic: clinicId, + referringDoctor: doctorID, + referringDoctorRemarks: referringDoctorRemarks, + priority: priority, + frequency: frequency, + extension: extension, + tokenID: token); + await BaseAppClient.post(PATIENT_REFER_TO_DOCTOR_URL, + onSuccess: (dynamic response, int statusCode) { + // print('Done : \n $res'); Navigator.pop(context); - } else { + }, + onFailure: (String error, int statusCode) { + isLoading = false; isError = true; - error = res['ErrorMessage'] ?? res['ErrorEndUserMessage']; - } - } - } else { - isLoading = false; - isError = true; - error = 'Please Check The Internet Connection'; - } + this.error = error; + }, + body: _referToDoctorRequest.toJson()); notifyListeners(); + } catch (err) { handelCatchErrorCase(err); } diff --git a/lib/root_page.dart b/lib/root_page.dart new file mode 100644 index 00000000..e361e42c --- /dev/null +++ b/lib/root_page.dart @@ -0,0 +1,38 @@ +import 'package:doctor_app_flutter/providers/auth_provider.dart'; +import 'package:doctor_app_flutter/screens/auth/login_screen.dart'; +import 'package:doctor_app_flutter/widgets/shared/dr_app_circular_progress_Indeicator.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import 'config/config.dart'; +import 'landing_page.dart'; + +class RootPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + AuthProvider authProvider = Provider.of(context); + Widget buildRoot() { + switch (authProvider.stutas) { + case APP_STATUS.LOADING: + return Scaffold( + body: Center( + child: DrAppCircularProgressIndeicator(), + ), + ); + break; + case APP_STATUS.UNAUTHENTICATED: + return Loginsreen(); + break; + case APP_STATUS.AUTHENTICATED: + return LandingPage(); + break; + } + } + + return AnimatedSwitcher( + duration: Duration(microseconds: 350), + child: buildRoot(), + ); + } +} diff --git a/lib/routes.dart b/lib/routes.dart index 34d3224d..cd5b3187 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -1,5 +1,6 @@ import 'package:doctor_app_flutter/config/config.dart'; +import 'package:doctor_app_flutter/root_page.dart'; import 'package:doctor_app_flutter/screens/patients/profile/insurance_approvals_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/patient_orders_screen.dart'; import 'package:doctor_app_flutter/screens/patients/profile/progress_note_screen.dart'; @@ -38,7 +39,8 @@ import './screens/settings/settings_screen.dart'; import 'landing_page.dart'; import 'screens/doctor/doctor_reply_screen.dart'; -const String INIT_ROUTE = LOGIN; +const String INIT_ROUTE = ROOT; +const String ROOT = 'root'; const String HOME = '/'; const String LOGIN = 'login'; const String PROFILE = 'profile'; @@ -71,6 +73,7 @@ const String BODY_MEASUREMENTS = 'patients/body-measurements'; const String IN_PATIENT_PRESCRIPTIONS_DETAILS = 'patients/prescription-details'; var routes = { + ROOT: (_) => RootPage(), HOME: (_) => LandingPage(), LOGIN: (_) => Loginsreen(), PROFILE: (_) => ProfileScreen(), diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index b8fbbdd5..5a947f66 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -307,7 +307,7 @@ class _DashboardScreenState extends State { child: DashboardItemIconText( widget.iconURL + 'search_patient.svg', "", - "Search Medicine", + TranslationBase.of(context).searchMedicine, showBorder: true, backgroundColor: Colors.white, valueFontColor: Colors.black, @@ -345,7 +345,7 @@ class _DashboardScreenState extends State { child: DashboardItemIconText( widget.iconURL + 'referral.svg', "", - "My Referral Patient", + TranslationBase.of(context).myReferralPatient, showBorder: true, backgroundColor: Colors.white, valueFontColor: Colors.black, @@ -380,7 +380,7 @@ class _DashboardScreenState extends State { child: DashboardItemIconText( widget.iconURL + 'referral.svg', "", - "My Referred Patient", + TranslationBase.of(context).myReferredPatient, showBorder: true, backgroundColor: Colors.white, valueFontColor: Colors.black, diff --git a/lib/screens/patients/patient_search_screen.dart b/lib/screens/patients/patient_search_screen.dart index 2e80a1b1..f020ca2e 100644 --- a/lib/screens/patients/patient_search_screen.dart +++ b/lib/screens/patients/patient_search_screen.dart @@ -18,6 +18,7 @@ import '../../lookups/patient_lookup.dart'; import '../../widgets/patients/dynamic_elements.dart'; import '../../config/config.dart'; import '../../models/doctor_profile_model.dart'; +import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); Helpers helpers = Helpers(); @@ -112,7 +113,7 @@ class _PatientSearchScreenState extends State { @override Widget build(BuildContext context) { return AppScaffold( - appBarTitle: "SEARCH FOR PATIENT", + appBarTitle: TranslationBase.of(context).searchPatient, body: ListView( children: [ RoundedContainer( @@ -209,7 +210,7 @@ class _PatientSearchScreenState extends State { height: 10, ), AppTextFormField( - hintText: 'First Name', + hintText: TranslationBase.of(context).firstName, onSaved: (value) { value == null ? _patientSearchFormValues.setFirstName = @@ -229,7 +230,7 @@ class _PatientSearchScreenState extends State { height: 10, ), AppTextFormField( - hintText: 'Middle Name', + hintText: TranslationBase.of(context).middleName, onSaved: (value) { value == null ? _patientSearchFormValues.setMiddleName = @@ -248,7 +249,7 @@ class _PatientSearchScreenState extends State { height: 10, ), AppTextFormField( - hintText: 'Last Name', + hintText: TranslationBase.of(context).lastName, onSaved: (value) { value == null ? _patientSearchFormValues.setLastName = "0" @@ -264,7 +265,7 @@ class _PatientSearchScreenState extends State { ), AppTextFormField( textInputType: TextInputType.number, - hintText: 'Phone Number', + hintText: TranslationBase.of(context).phoneNumber, // validator: (value) { // return TextValidator().validateMobile(value); // }, @@ -287,7 +288,7 @@ class _PatientSearchScreenState extends State { ), AppTextFormField( textInputType: TextInputType.number, - hintText: 'Patient ID', + hintText: TranslationBase.of(context).patientID, // inputFormatter: ONLY_NUMBERS, onSaved: (value) { @@ -306,7 +307,7 @@ class _PatientSearchScreenState extends State { ), AppTextFormField( textInputType: TextInputType.number, - hintText: 'Patient File', + hintText: TranslationBase.of(context).patientFile, // validator: (value) { // return TextValidator().validateIdNumber(value); // }, @@ -400,7 +401,9 @@ class _PatientSearchScreenState extends State { value: true, activeColor: Color(0xffFFDDD9), onChanged: (bool newValue) {}), - AppText('Only Arrived Patient', + AppText( + TranslationBase.of(context) + .onlyArrivedPatient, fontSize: SizeConfig.textMultiplier * 2), ])), SizedBox( @@ -419,7 +422,7 @@ class _PatientSearchScreenState extends State { alignment: WrapAlignment.center, children: [ AppButton( - title: "Search", + title: TranslationBase.of(context).search, color: Color(0xff58434F), onPressed: () { _validateInputs(); diff --git a/lib/screens/patients/patients_screen.dart b/lib/screens/patients/patients_screen.dart index 68114a3d..96211046 100644 --- a/lib/screens/patients/patients_screen.dart +++ b/lib/screens/patients/patients_screen.dart @@ -102,8 +102,10 @@ class _PatientsScreenState extends State { } }); }).catchError((error) { + print(error); setState(() { _isError = true; + _isLoading = false; this.error = helpers.generateContactAdminMsg(error); }); }); diff --git a/lib/screens/patients/profile/refer_patient_screen.dart b/lib/screens/patients/profile/refer_patient_screen.dart index 24146ca5..1da89f97 100644 --- a/lib/screens/patients/profile/refer_patient_screen.dart +++ b/lib/screens/patients/profile/refer_patient_screen.dart @@ -15,6 +15,7 @@ import '../../../util/dr_app_shared_pref.dart'; import '../../../widgets/shared/app_scaffold_widget.dart'; import '../../../widgets/shared/app_texts_widget.dart'; import '../../../widgets/shared/dr_app_circular_progress_Indeicator.dart'; +import '../../../util/extenstions.dart'; DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); @@ -37,6 +38,7 @@ class _ReferPatientState extends State { final _remarksController = TextEditingController(); final _extController = TextEditingController(); var _isInit = true; + bool isValid; var clinicId; var doctorId; @@ -49,14 +51,17 @@ class _ReferPatientState extends State { List _priorities = ['Very Urgent', 'Urgent', 'Routine']; int _activePriority = 2; + FocusNode myFocusNode; + @override void didChangeDependencies() { super.didChangeDependencies(); if (_isInit) { + myFocusNode = FocusNode(); doctorsList = null; patientsProv = Provider.of(context); patientsProv.getClinicsList(); - patientsProv.getReferralFrequancyList(); + patientsProv.getReferralFrequancyList(); } _isInit = false; } @@ -70,10 +75,9 @@ class _ReferPatientState extends State { : patientsProv.isError ? DrAppEmbeddedError(error: patientsProv.error) : patientsProv.clinicsList == null - ? DrAppEmbeddedError( - error: 'Something Wrong!') + ? DrAppEmbeddedError(error: 'Something Wrong!') : SingleChildScrollView( - child: Column( + child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -128,13 +132,17 @@ class _ReferPatientState extends State { setState(() { _selectedDoctor = null; _selectedClinic = newValue; - var clinicInfo = patientsProv.clinicsList.where((i) => + var clinicInfo = patientsProv + .clinicsList + .where((i) => i['ClinicDescription'] .toString() - .contains(_selectedClinic)).toList(); - - clinicId = - clinicInfo[0]['ClinicID'].toString(); + .contains( + _selectedClinic)) + .toList(); + + clinicId = clinicInfo[0]['ClinicID'] + .toString(); patientsProv.getDoctorsList(clinicId); }) @@ -208,15 +216,16 @@ class _ReferPatientState extends State { onChanged: (newValue) => { setState(() { _selectedDoctor = newValue; - doctorsList = patientsProv.doctorsList; - - var doctorInfo = - doctorsList.where((i) => - i['DoctorName'] - .toString() - .contains(_selectedDoctor)).toList(); - doctorId = doctorInfo[0]['DoctorID'].toString(); - + doctorsList = + patientsProv.doctorsList; + + var doctorInfo = doctorsList + .where((i) => i['DoctorName'] + .toString() + .contains(_selectedDoctor)) + .toList(); + doctorId = doctorInfo[0]['DoctorID'] + .toString(); }) }, items: patientsProv @@ -320,13 +329,16 @@ class _ReferPatientState extends State { onChanged: (newValue) => { setState(() { _selectedReferralFrequancy = newValue; - var freqInfo = - patientsProv.referalFrequancyList.singleWhere((i) => - i['Description'] - .toString() - .contains(_selectedReferralFrequancy)); - freqId = - freqInfo['ParameterCode'].toString(); + var freqInfo = patientsProv + .referalFrequancyList + .singleWhere((i) => i[ + 'Description'] + .toString() + .contains( + _selectedReferralFrequancy)); + freqId = freqInfo['ParameterCode'] + .toString(); + myFocusNode.requestFocus(); }) }, items: patientsProv @@ -357,6 +369,7 @@ class _ReferPatientState extends State { padding: const EdgeInsets.all(10.0), child: AppTextFormField( hintText: "Remarks", + focusNode: myFocusNode, controller: _remarksController, inputFormatter: ONLY_LETTERS, textInputType: TextInputType.text, @@ -364,14 +377,27 @@ class _ReferPatientState extends State { ), ), Padding( - padding: const EdgeInsets.all(20.0), - child: AppButton(title: "Send", color: Color(PRIMARY_COLOR),onPressed: ()=>{ - referToDoctor(context) - },), - ) + padding: const EdgeInsets.all(20.0), + child: Column( + children: [ + AppText( + "Please fill all fields..!", + color: Colors.red, + fontWeight: FontWeight.bold, + margin: 10, + visibility: + isValid == null ? false : !isValid, + ), + AppButton( + title: "Send", + color: Color(PRIMARY_COLOR), + onPressed: () => {referToDoctor(context)}, + ) + ], + )) ], ), - ), + ), ); } @@ -456,21 +482,35 @@ class _ReferPatientState extends State { return time; } - void referToDoctor(context){ + void referToDoctor(context) { + if (!validation()) { + return; + } + final routeArgs = ModalRoute.of(context).settings.arguments as Map; PatiantInformtion patient = routeArgs['patient']; patientsProv.referToDoctor(context, - extension: _extController.value.text, - admissionNo:int.parse( patient.admissionNo), - referringDoctorRemarks: _remarksController.value.text, - frequency: freqId, - patientID: patient.patientId, - patientTypeID: patient.patientType, - priority: (_activePriority + 1).toString(), - roomID: patient.roomId, - selectedClinicID: clinicId.toString(), - selectedDoctorID: doctorId.toString(), - projectID: patient.projectId - ); + extension: _extController.value.text, + admissionNo: int.parse(patient.admissionNo), + referringDoctorRemarks: _remarksController.value.text, + frequency: freqId, + patientID: patient.patientId, + patientTypeID: patient.patientType, + priority: (_activePriority + 1).toString(), + roomID: patient.roomId, + selectedClinicID: clinicId.toString(), + selectedDoctorID: doctorId.toString(), + projectID: patient.projectId); + } + + bool validation() { + setState(() { + isValid = !_extController.value.text.isNullOrEmpty() && + !_remarksController.value.text.isNullOrEmpty() && + freqId != null && + clinicId != null && + doctorId != null; + }); + return isValid; } } diff --git a/lib/util/helpers.dart b/lib/util/helpers.dart index ebcf817c..aa92b253 100644 --- a/lib/util/helpers.dart +++ b/lib/util/helpers.dart @@ -335,7 +335,7 @@ class Helpers { return localMsg; } - clearSharedPref() async { + static clearSharedPref() async { await sharedPref.clear(); } diff --git a/lib/util/translations_delegate_base.dart b/lib/util/translations_delegate_base.dart index acbff5ce..41a923f5 100644 --- a/lib/util/translations_delegate_base.dart +++ b/lib/util/translations_delegate_base.dart @@ -71,6 +71,21 @@ class TranslationBase { String get operations => localizedValues['inPatient'][locale.languageCode]; String get patientServices => localizedValues['patientServices'][locale.languageCode]; + String get searchMedicine => + localizedValues['searchMedicine'][locale.languageCode]; + String get myReferralPatient => + localizedValues['myReferralPatient'][locale.languageCode]; + String get myReferredPatient => + localizedValues['myReferredPatient'][locale.languageCode]; + String get firstName => localizedValues['firstName'][locale.languageCode]; + String get middleName => localizedValues['middleName'][locale.languageCode]; + String get lastName => localizedValues['lastName'][locale.languageCode]; + String get phoneNumber => localizedValues['phoneNumber'][locale.languageCode]; + String get patientID => localizedValues['patientID'][locale.languageCode]; + String get patientFile => localizedValues['patientFile'][locale.languageCode]; + String get search => localizedValues['search'][locale.languageCode]; + String get onlyArrivedPatient => + localizedValues['onlyArrivedPatient'][locale.languageCode]; } class TranslationBaseDelegate extends LocalizationsDelegate { diff --git a/lib/widgets/auth/login_form.dart b/lib/widgets/auth/login_form.dart index 2d2d2bfd..17b5520d 100644 --- a/lib/widgets/auth/login_form.dart +++ b/lib/widgets/auth/login_form.dart @@ -37,8 +37,8 @@ class _LoginFormState extends State { String uniqueId = "Unknown"; var projectsList = []; bool _isInit = true; - FocusNode focusPass; - FocusNode focusProject; + FocusNode focusPass = FocusNode(); + FocusNode focusProject = FocusNode(); var userInfo = UserModel( UserID: '', @@ -72,8 +72,7 @@ class _LoginFormState extends State { @override Widget build(BuildContext context) { - final focusPass = FocusNode(); - final focusProject = FocusNode(); + AuthProvider authProv = Provider.of(context); @@ -100,7 +99,7 @@ class _LoginFormState extends State { userInfo.UserID = value.trim(); }, onFieldSubmitted: (_) { - FocusScope.of(context).nextFocus(); + focusPass.nextFocus(); }, autofocus: false, ), @@ -121,7 +120,7 @@ class _LoginFormState extends State { userInfo.Password = value; }, onFieldSubmitted: (_) { - FocusScope.of(context).nextFocus(); + focusPass.nextFocus(); helpers.showCupertinoPicker( context, projectsList, 'Name', onSelectProject); }, diff --git a/lib/widgets/patients/dynamic_elements.dart b/lib/widgets/patients/dynamic_elements.dart index be66e88e..36808cb0 100644 --- a/lib/widgets/patients/dynamic_elements.dart +++ b/lib/widgets/patients/dynamic_elements.dart @@ -29,9 +29,28 @@ class _DynamicElementsState extends State { var selectedDate = DateFormat.yMd().format(pickedDate); if (id == '_selectedFromDate') { - _fromDateController.text = selectedDate; + // _fromDateController.text = selectedDate; + selectedDate = pickedDate.year.toString() + + "-" + + pickedDate.month.toString().padLeft(2, '0') + + "-" + + pickedDate.day.toString().padLeft(2, '0'); + + _fromDateController.text = selectedDate; + + + } else { + + + selectedDate = pickedDate.year.toString() + + "-" + + pickedDate.month.toString().padLeft(2, '0') + + "-" + + pickedDate.day.toString().padLeft(2, '0'); + _toDateController.text = selectedDate; + // _toDateController.text = selectedDate; } }); }); @@ -72,8 +91,11 @@ class _DynamicElementsState extends State { if (_fromDateController.text.toString().trim().isEmpty) { widget._patientSearchFormValues.From = "0"; } else { - widget._patientSearchFormValues.From = - _fromDateController.text; + widget._patientSearchFormValues.From = _fromDateController.text.replaceAll("/", "-"); + + + + // _fromDateController.text; } }, ), @@ -103,7 +125,7 @@ class _DynamicElementsState extends State { if (_toDateController.text.toString().trim().isEmpty) { widget._patientSearchFormValues.To = "0"; } else { - widget._patientSearchFormValues.To = _toDateController.text; + widget._patientSearchFormValues.To = _toDateController.text.replaceAll("/", "-"); } }, ), diff --git a/lib/widgets/shared/app_drawer_widget.dart b/lib/widgets/shared/app_drawer_widget.dart index 919dc939..b2cd3dd9 100644 --- a/lib/widgets/shared/app_drawer_widget.dart +++ b/lib/widgets/shared/app_drawer_widget.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -105,7 +106,8 @@ class _AppDrawerState extends State { ), InkWell( child: DrawerItem("lOGOUT", Icons.exit_to_app), - onTap: () { + onTap: () async { + await Helpers.clearSharedPref(); Navigator.pop(context); Navigator.of(context).pushNamed(LOGIN); }, diff --git a/lib/widgets/shared/app_scaffold_widget.dart b/lib/widgets/shared/app_scaffold_widget.dart index 263e3848..824ba11b 100644 --- a/lib/widgets/shared/app_scaffold_widget.dart +++ b/lib/widgets/shared/app_scaffold_widget.dart @@ -1,3 +1,4 @@ +import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/routes.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; @@ -13,6 +14,7 @@ class AppScaffold extends StatelessWidget { @override Widget build(BuildContext context) { + AppGlobal.CONTEX = context; return Scaffold( backgroundColor: Hexcolor('#F5F5F5'), appBar: appBarTitle != '' @@ -35,7 +37,7 @@ class AppScaffold extends StatelessWidget { IconButton( icon: Icon(DoctorApp.home_icon_active), color: Colors.white, //Colors.black, - onPressed: () => Navigator.pushReplacementNamed(context, HOME), + onPressed: () => Navigator.pushNamedAndRemoveUntil(context, HOME,(r) => false ), ), ], ) diff --git a/lib/widgets/shared/app_text_form_field.dart b/lib/widgets/shared/app_text_form_field.dart index fd50ad66..06dfb9e7 100644 --- a/lib/widgets/shared/app_text_form_field.dart +++ b/lib/widgets/shared/app_text_form_field.dart @@ -18,7 +18,8 @@ class AppTextFormField extends FormField { TextEditingController controller, bool autovalidate = true, TextInputType textInputType, - String hintText + String hintText, + FocusNode focusNode }) : super( onSaved: onSaved, validator: validator, @@ -27,6 +28,7 @@ class AppTextFormField extends FormField { return Column( children: [ TextFormField( + focusNode: focusNode, keyboardType: textInputType, inputFormatters: [WhitelistingTextInputFormatter(RegExp(inputFormatter)),], onChanged: onChanged?? (value){