You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
doctor_app_flutter/lib/screens/auth/login_screen.dart

237 lines
9.4 KiB
Dart

import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/model/hospitals/get_hospitals_response_model.dart';
import 'package:doctor_app_flutter/core/viewModel/authentication_view_model.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/loader/gif_loader_dialog_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
5 years ago
import 'package:provider/provider.dart';
import '../../widgets/shared/app_scaffold_widget.dart';
class LoginScreen extends StatefulWidget {
@override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
late String platformImei;
bool allowCallApi = true;
final loginFormKey = GlobalKey<FormState>();
var projectIdController = TextEditingController();
var userIdController = TextEditingController();
var passwordController = TextEditingController();
List<GetHospitalsResponseModel> projectsList = [];
FocusNode focusPass = FocusNode();
FocusNode focusProject = FocusNode();
late AuthenticationViewModel authenticationViewModel;
@override
Widget build(BuildContext context) {
authenticationViewModel = Provider.of<AuthenticationViewModel>(context);
double textFieldHeight = SizeConfig.heightMultiplier * (SizeConfig.isHeightVeryShort ?10:SizeConfig.isHeightShort?8:6);
return AppScaffold(
isShowAppBar: false,
backgroundColor: HexColor('#F8F8F8'),
5 years ago
body: SingleChildScrollView(
child: SafeArea(
child: Container(
margin: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 30),
alignment: Alignment.topLeft,
child: Column(
5 years ago
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
//TODO Use App Text rather than text
Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
5 years ago
children: [
SizedBox(
5 years ago
height: 10,
),
5 years ago
Text(
TranslationBase.of(context).welcomeTo??"",
5 years ago
style: TextStyle(
5 years ago
fontSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
4,
fontWeight: FontWeight.w600,
5 years ago
fontFamily: 'Poppins'),
),
Text(
TranslationBase.of(context).drSulaimanAlHabib!,
5 years ago
style: TextStyle(
color: Color(0xFF2B353E),
5 years ago
fontWeight: FontWeight.bold,
fontSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
6,
5 years ago
fontFamily: 'Poppins'),
),
Text(
"Doctor App",
style: TextStyle(
5 years ago
fontSize: SizeConfig
.getTextMultiplierBasedOnWidth() *
4,
fontWeight: FontWeight.w600,
5 years ago
color: Color(0xFFD02127)),
),
5 years ago
])),
5 years ago
SizedBox(
height: 40,
),
Form(
key: loginFormKey,
child: Column(
5 years ago
crossAxisAlignment: CrossAxisAlignment.start,
children: [
buildSizedBox(),
AppTextFieldCustom(
height: textFieldHeight,
hintText: TranslationBase.of(context).enterId,
hasBorder: true,
controller: userIdController,
onChanged: (value) {
if (value != null)
setState(() {
authenticationViewModel.userInfo.userID =
value.trim();
});
},
),
5 years ago
buildSizedBox(),
AppTextFieldCustom(
height: textFieldHeight,
hintText: TranslationBase.of(context).enterPassword,
hasBorder: true,
isSecure: true,
controller: passwordController,
onChanged: (value) {
if (value != null)
setState(() {
authenticationViewModel.userInfo.password =
value.trim();
});
this.getProjects(
authenticationViewModel.userInfo.userID);
},
onClick: () {},
),
5 years ago
buildSizedBox(),
AppTextFieldCustom(
height: textFieldHeight,
hintText:
TranslationBase.of(context).selectYourProject,
hasBorder: true,
controller: projectIdController,
isTextFieldHasSuffix: true,
enabled: false,
onClick: projectsList.isEmpty== null ? null:() {
Helpers.showCupertinoPicker(
context,
projectsList,
'facilityName',
onSelectProject,
authenticationViewModel);
},
),
5 years ago
buildSizedBox(),
]),
5 years ago
),
SizedBox(
height: 40,
),
],
)),
),
),
5 years ago
bottomSheet: Container(
Merge branch 'flutter_2_developemt' of https://gitlab.com/Cloud_Solution/doctor_app_flutter into flutter_vervion_2_elham  Conflicts:  ios/Podfile  lib/client/base_app_client.dart  lib/core/model/patient_muse/PatientSearchRequestModel.dart  lib/core/model/referral/MyReferralPatientModel.dart  lib/core/service/patient/LiveCarePatientServices.dart  lib/core/service/patient/MyReferralPatientService.dart  lib/core/service/patient/patient_service.dart  lib/core/viewModel/LiveCarePatientViewModel.dart  lib/core/viewModel/PatientMedicalReportViewModel.dart  lib/core/viewModel/PatientSearchViewModel.dart  lib/core/viewModel/authentication_view_model.dart  lib/core/viewModel/dashboard_view_model.dart  lib/core/viewModel/patient-referral-viewmodel.dart  lib/core/viewModel/procedure_View_model.dart  lib/core/viewModel/referred_view_model.dart  lib/models/livecare/start_call_req.dart  lib/models/patient/patiant_info_model.dart  lib/screens/auth/login_screen.dart  lib/screens/auth/verification_methods_screen.dart  lib/screens/home/dashboard_slider-item-widget.dart  lib/screens/home/dashboard_swipe_widget.dart  lib/screens/home/home_page_card.dart  lib/screens/home/home_patient_card.dart  lib/screens/home/home_screen.dart  lib/screens/live_care/end_call_screen.dart  lib/screens/live_care/live-care_transfer_to_admin.dart  lib/screens/live_care/live_care_patient_screen.dart  lib/screens/medical-file/health_summary_page.dart  lib/screens/medical-file/medical_file_details.dart  lib/screens/patients/ECGPage.dart  lib/screens/patients/insurance_approval_screen_patient.dart  lib/screens/patients/insurance_approvals_details.dart  lib/screens/patients/profile/UCAF/UCAF-detail-screen.dart  lib/screens/patients/profile/UCAF/UCAF-input-screen.dart  lib/screens/patients/profile/admission-request/admission-request-first-screen.dart  lib/screens/patients/profile/admission-request/admission-request-third-screen.dart  lib/screens/patients/profile/admission-request/admission-request_second-screen.dart  lib/screens/patients/profile/medical_report/AddVerifyMedicalReport.dart  lib/screens/patients/profile/medical_report/MedicalReportPage.dart  lib/screens/patients/profile/note/progress_note_screen.dart  lib/screens/patients/profile/profile_screen/PatientProfileCardModel.dart  lib/screens/patients/profile/profile_screen/patient_profile_screen.dart  lib/screens/patients/profile/radiology/radiology_details_page.dart  lib/screens/patients/profile/radiology/radiology_home_page.dart  lib/screens/patients/profile/referral/AddReplayOnReferralPatient.dart  lib/screens/patients/profile/referral/my-referral-inpatient-screen.dart  lib/screens/patients/profile/referral/refer-patient-screen-in-patient.dart  lib/screens/patients/profile/referral/refer-patient-screen.dart  lib/screens/patients/profile/referral/referral_patient_detail_in-paint.dart  lib/screens/patients/profile/referral/referred-patient-screen.dart  lib/screens/patients/profile/referral/referred_patient_detail_in-paint.dart  lib/screens/patients/profile/soap_update/update_soap_index.dart  lib/screens/patients/profile/vital_sign/vital_sign_details_screen.dart  lib/screens/patients/profile/vital_sign/vital_sign_item_details_screen.dart  lib/screens/prescription/add_favourite_prescription.dart  lib/screens/prescription/add_prescription_form.dart  lib/screens/prescription/prescription_home_screen.dart  lib/screens/prescription/prescription_item_in_patient_page.dart  lib/screens/prescription/prescription_items_page.dart  lib/screens/prescription/prescription_screen.dart  lib/screens/prescription/prescription_screen_history.dart  lib/screens/prescription/prescriptions_page.dart  lib/screens/procedures/ProcedureCard.dart  lib/screens/procedures/add-favourite-procedure.dart  lib/screens/procedures/add-procedure-form.dart  lib/screens/procedures/add_lab_home_screen.dart  lib/screens/procedures/add_lab_orders.dart  lib/screens/procedures/add_radiology_order.dart  lib/screens/procedures/add_radiology_screen.dart  lib/screens/procedures/base_add_procedure_tab_page.dart  lib/screens/procedures/entity_list_procedure_widget.dart  lib/screens/qr_reader/QR_reader_screen.dart  lib/util/VideoChannel.dart  lib/util/translations_delegate_base.dart  lib/widgets/auth/sms-popup.dart  lib/widgets/auth/verification_methods_list.dart  lib/widgets/dashboard/out_patient_stack.dart  lib/widgets/patients/patient-referral-item-widget.dart  lib/widgets/patients/patient_card/PatientCard.dart  lib/widgets/patients/profile/PatientHeaderWidgetNoAvatar.dart  lib/widgets/patients/profile/PatientProfileButton.dart  lib/widgets/patients/profile/patient-page-header-widget.dart  lib/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart  lib/widgets/patients/profile/patient-profile-header-new-design.dart  lib/widgets/patients/profile/patient_profile_header_with_appointment_card_app_bar.dart  lib/widgets/patients/profile/profile-welcome-widget.dart  lib/widgets/shared/app_drawer_widget.dart  lib/widgets/shared/app_scaffold_widget.dart  lib/widgets/shared/app_texts_widget.dart  lib/widgets/shared/bottom_navigation_item.dart  lib/widgets/shared/buttons/app_buttons_widget.dart  lib/widgets/shared/drawer_item_widget.dart  pubspec.lock
5 years ago
// color: Colors.green,
5 years ago
height: SizeConfig.heightMultiplier * 10,
5 years ago
width: double.infinity,
child: Center(
child: FractionallySizedBox(
widthFactor: 0.9,
child: Column(
5 years ago
mainAxisAlignment: MainAxisAlignment.center,
5 years ago
children: <Widget>[
AppButton(
5 years ago
height: SizeConfig.heightMultiplier *
(SizeConfig.isHeightVeryShort ? 8 : 6),
5 years ago
hPadding: 1,
title: TranslationBase.of(context).login,
5 years ago
color: Color(0xFFD02127),
fontWeight: FontWeight.w700,
disabled: authenticationViewModel.userInfo.userID == null ||
authenticationViewModel.userInfo.password == null,
5 years ago
onPressed: () {
login(context);
},
),
],
),
),
),
),
);
}
SizedBox buildSizedBox() {
return SizedBox(
5 years ago
height: SizeConfig.heightMultiplier * 2,
);
}
login(
context,
) async {
if (loginFormKey.currentState!.validate()) {
loginFormKey.currentState!.save();
GifLoaderDialogUtils.showMyDialog(context);
await authenticationViewModel.login(authenticationViewModel.userInfo);
if (authenticationViewModel.state == ViewState.ErrorLocal) {
GifLoaderDialogUtils.hideDialog(context);
Helpers.showErrorToast(authenticationViewModel.error);
} else {
GifLoaderDialogUtils.hideDialog(context);
authenticationViewModel.setUnverified(true, isFromLogin: true);
}
}
}
onSelectProject(index) {
setState(() {
5 years ago
authenticationViewModel.userInfo.projectID =
projectsList[index].facilityId;
projectIdController.text = projectsList[index].facilityName!;
});
primaryFocus!.unfocus();
}
String memberID = "";
getProjects(memberID) async {
if (memberID != null && memberID != '') {
if (this.memberID != memberID) {
this.memberID = memberID;
await authenticationViewModel.getHospitalsList(memberID);
if (authenticationViewModel.state == ViewState.Idle) {
projectsList = authenticationViewModel.hospitals;
setState(() {
5 years ago
authenticationViewModel.userInfo.projectID =
projectsList[0].facilityId;
projectIdController.text = projectsList[0].facilityName!;
});
}
}
}
}
}