import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:hexcolor/hexcolor.dart'; import '../../../config/config.dart'; import '../../../core/model/search_drug/get_medication_response_model.dart'; import '../../../core/viewModel/medicine_view_model.dart'; import '../../../core/viewModel/prescription_view_model.dart'; import '../../../util/helpers.dart'; import '../../../util/translations_delegate_base.dart'; import '../../../widgets/medicine/medicine_item_widget.dart'; import '../../../widgets/shared/buttons/app_buttons_widget.dart'; import '../../../widgets/shared/loader/gif_loader_dialog_utils.dart'; import '../../../widgets/shared/network_base_view.dart'; import '../../../widgets/shared/text_fields/app_text_form_field.dart'; import '../../base/base_view.dart'; final myController = TextEditingController(); class SearchPrescriptionWidget extends StatelessWidget { final double spaceBetweenTextFields; final MedicineViewModel medicineViewModel; final PrescriptionViewModel prescriptionViewModel; const SearchPrescriptionWidget({Key key, this.spaceBetweenTextFields, this.medicineViewModel, this.prescriptionViewModel}) : super(key: key); @override Widget build(BuildContext context) { bool visibilityPrescriptionForm = false; bool visibilitySearch = true; GetMedicationResponseModel _selectedMedication; return BaseView( onModelReady: (model) async {}, builder: ( BuildContext context, MedicineViewModel model, Widget child,) => NetworkBaseView( baseViewModel: model, child: Visibility( visible: visibilityPrescriptionForm, child: Column( children: [ FractionallySizedBox( widthFactor: 0.9, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(6.0)), border: Border.all(width: 1.0, color: HexColor("#CCCCCC"))), padding: EdgeInsets.all(10), child: AppTextFormField( onTap: () { visibilityPrescriptionForm = false; visibilitySearch = true; }, borderColor: Colors.white, hintText: TranslationBase.of(context).searchMedicineNameHere, controller: myController, onSaved: (value) {}, onFieldSubmitted: (value) { searchMedicine(context, model); }, inputFormatter: ONLY_LETTERS, ), ), ), SizedBox( height: 15.0, ), Visibility( visible: visibilitySearch, child: Container( child: Column( children: [ FractionallySizedBox( widthFactor: 0.8, child: Container( child: Wrap( alignment: WrapAlignment.center, children: [ AppButton( title: TranslationBase.of(context).search, onPressed: () async { await searchMedicine( context, model, ); }, ), ], ), ), ), if (myController.text != '') Container( height: MediaQuery.of(context).size.height * 0.5, child: ListView.builder( padding: const EdgeInsets.only(top: 20), scrollDirection: Axis.vertical, itemCount: model.allMedicationList == null ? 0 : model.allMedicationList.length, itemBuilder: (BuildContext context, int index) { return InkWell( child: MedicineItemWidget( label: model.allMedicationList[index].description), onTap: () { model.getItem( itemID: model.allMedicationList[index].itemId); visibilityPrescriptionForm = true; visibilitySearch = false; _selectedMedication = model.allMedicationList[index]; // uom = _selectedMedication.uom; }, ); }, ), ), ], ), ), ), SizedBox( height: spaceBetweenTextFields, ), ], ), ), ), );} searchMedicine(context, MedicineViewModel model) async { FocusScope.of(context).unfocus(); if (myController.text.length < 3) { Helpers.showErrorToast(TranslationBase.of(context).moreThan3Letter); return; } GifLoaderDialogUtils.showMyDialog(context); await model.getMedicationList(drug: myController.text,isLocalBusy: true); GifLoaderDialogUtils.hideDialog(context); } }