import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/model/procedure/categories_procedure.dart'; import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; import 'package:doctor_app_flutter/core/model/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/procedures/procedure_type.dart'; import 'package:doctor_app_flutter/utils/dr_app_toast_msg.dart'; import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.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/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/network_base_view.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/app-textfield-custom.dart'; import 'package:flutter/material.dart'; import '../../config/config.dart'; import 'entity_list_checkbox_search_widget.dart'; class AddProcedurePage extends StatefulWidget { final ProcedureViewModel model; final PatiantInformtion patient; final ProcedureType procedureType; const AddProcedurePage( {Key key, this.model, this.patient, @required this.procedureType}) : super(key: key); @override _AddProcedurePageState createState() => _AddProcedurePageState( patient: patient, model: model, procedureType: this.procedureType); } class _AddProcedurePageState extends State { int selectedType; ProcedureViewModel model; PatiantInformtion patient; ProcedureType procedureType; _AddProcedurePageState({this.patient, this.model, this.procedureType}); TextEditingController procedureController = TextEditingController(); TextEditingController remarksController = TextEditingController(); List entityList = List(); List entityListProcedure = List(); TextEditingController procedureName = TextEditingController(); dynamic selectedCategory; setSelectedType(int val) { setState(() { selectedType = val; }); } @override Widget build(BuildContext context) { return BaseView( onModelReady: (model) { model.getProcedureCategory( categoryName: procedureType.getCategoryName(), categoryID: procedureType.getCategoryId(), patientId: patient.patientId); }, builder: (BuildContext context, ProcedureViewModel model, Widget child) => AppScaffold( isShowAppBar: false, body: SingleChildScrollView( child: Column( children: [ Container( height: MediaQuery.of(context).size.height * 0.070, ), NetworkBaseView( baseViewModel: model, child: Container( child: Padding( padding: EdgeInsets.all(12.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ if (procedureType == ProcedureType.PROCEDURE) Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppText( TranslationBase.of(context) .pleaseEnterProcedure, fontWeight: FontWeight.w700, fontSize: 20, ), ], ), SizedBox( height: MediaQuery.of(context).size.height * 0.02, ), Row( children: [ Container( width: MediaQuery.of(context).size.width * 0.79, child: AppTextFieldCustom( hintText: TranslationBase.of(context) .searchProcedureHere, isTextFieldHasSuffix: false, maxLines: 1, minLines: 1, hasBorder: true, controller: procedureName, ), ), SizedBox( width: MediaQuery.of(context).size.width * 0.02, ), Expanded( child: InkWell( onTap: () { if (procedureName.text.isNotEmpty && procedureName.text.length >= 3) model.getProcedureCategory( patientId: patient.patientId, categoryName: procedureName.text); else DrAppToastMsg.showErrorToast( TranslationBase.of(context) .atLeastThreeCharacters, ); }, child: Icon( Icons.search, size: 25.0, ), ), ), ], ), ], ), if ((procedureType == ProcedureType.PROCEDURE ? procedureName.text.isNotEmpty : true) && model.categoriesList.length != 0) NetworkBaseView( baseViewModel: model, child: EntityListCheckboxSearchWidget( model: widget.model, masterList: model.categoriesList[0].entityList, removeProcedure: (item) { setState(() { entityList.remove(item); }); }, addProcedure: (history) { setState(() { entityList.add(history); }); }, addSelectedHistories: () { }, isEntityListSelected: (master) => widget.model.isEntityListSelected(master,entityList), )), SizedBox(height: 10,) ], ), ), ), ), Container( margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), child: Wrap( alignment: WrapAlignment.center, children: [ AppButton( title: procedureType.getAddButtonTitle(context), fontWeight: FontWeight.w700, color: AppGlobal.appGreenColor, onPressed: () async { GifLoaderDialogUtils.showMyDialog(context); if (entityList.isEmpty == true) { DrAppToastMsg.showErrorToast( TranslationBase.of(context) .fillTheMandatoryProcedureDetails, ); GifLoaderDialogUtils.hideDialog(context); return; } GifLoaderDialogUtils.showMyDialog(context); await this.model.preparePostProcedure( orderType: selectedType.toString(), entityList: entityList, patient: patient, remarks: remarksController.text, procedureType: ProcedureType.PROCEDURE, isLocalBusy: true, ); Navigator.pop(context); }, ), ], ), ), ], ), ), ), ); } }