add auto complete search

merge-requests/521/head
Elham Rababah 5 years ago
parent e73ca8af71
commit 8220ef7700

@ -122,7 +122,7 @@ class _AdmissionRequestThirdScreenState
AppTextFieldCustom( AppTextFieldCustom(
height: screenSize.height * 0.075, height: screenSize.height * 0.075,
hintText: TranslationBase.of(context).clinic, hintText: TranslationBase.of(context).clinic,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: clinicError, validationError: clinicError,
dropDownText: _selectedClinic != null dropDownText: _selectedClinic != null
? projectViewModel.isArabic? _selectedClinic['clinicNameArabic'] : _selectedClinic['clinicNameEnglish'] ? projectViewModel.isArabic? _selectedClinic['clinicNameArabic'] : _selectedClinic['clinicNameEnglish']
@ -172,7 +172,7 @@ class _AdmissionRequestThirdScreenState
AppTextFieldCustom( AppTextFieldCustom(
height: screenSize.height * 0.075, height: screenSize.height * 0.075,
hintText: TranslationBase.of(context).doctor, hintText: TranslationBase.of(context).doctor,
isDropDown: true, isTextFieldHasSuffix: true,
dropDownText: _selectedDoctor != null dropDownText: _selectedDoctor != null
? _selectedDoctor['DoctorName'] ? _selectedDoctor['DoctorName']
: null, : null,
@ -280,7 +280,7 @@ class _AdmissionRequestThirdScreenState
AppTextFieldCustom( AppTextFieldCustom(
height: screenSize.height * 0.075, height: screenSize.height * 0.075,
hintText: TranslationBase.of(context).dietType, hintText: TranslationBase.of(context).dietType,
isDropDown: true, isTextFieldHasSuffix: true,
dropDownText: _selectedDietType != null dropDownText: _selectedDietType != null
? _selectedDietType['nameEn'] ? _selectedDietType['nameEn']
: null, : null,

@ -115,7 +115,7 @@ class _AdmissionRequestThirdScreenState
? _selectedDiagnosis['nameEn'] ? _selectedDiagnosis['nameEn']
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: diagnosisError, validationError: diagnosisError,
onClick: model.diagnosisTypesList != null && onClick: model.diagnosisTypesList != null &&
model.diagnosisTypesList.length > 0 model.diagnosisTypesList.length > 0
@ -161,7 +161,7 @@ class _AdmissionRequestThirdScreenState
? _selectedIcd['description'] ? _selectedIcd['description']
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: icdError, validationError: icdError,
onClick: model.icdCodes != null && onClick: model.icdCodes != null &&
model.icdCodes.length > 0 model.icdCodes.length > 0
@ -209,7 +209,7 @@ class _AdmissionRequestThirdScreenState
? _selectedDiagnosisType['description'] ? _selectedDiagnosisType['description']
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: diagnosisTypeError, validationError: diagnosisTypeError,
onClick: model.listOfDiagnosisSelectionTypes != onClick: model.listOfDiagnosisSelectionTypes !=
null && null &&

@ -203,7 +203,7 @@ class _AdmissionRequestSecondScreenState
? "${DateUtils.convertStringToDateFormat(_expectedAdmissionDate.toString(), "yyyy-MM-dd")}" ? "${DateUtils.convertStringToDateFormat(_expectedAdmissionDate.toString(), "yyyy-MM-dd")}"
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: expectedDatesError, validationError: expectedDatesError,
suffixIcon: Icon( suffixIcon: Icon(
Icons.calendar_today, Icons.calendar_today,
@ -231,7 +231,7 @@ class _AdmissionRequestSecondScreenState
? _selectedFloor['description'] ? _selectedFloor['description']
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: floorError, validationError: floorError,
onClick: model.floorList != null && onClick: model.floorList != null &&
model.floorList.length > 0 model.floorList.length > 0
@ -281,7 +281,7 @@ class _AdmissionRequestSecondScreenState
? _selectedWard['description'] ? _selectedWard['description']
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
onClick: model.wardList != null && onClick: model.wardList != null &&
model.wardList.length > 0 model.wardList.length > 0
? () { ? () {
@ -331,7 +331,7 @@ class _AdmissionRequestSecondScreenState
? _selectedRoomCategory['description'] ? _selectedRoomCategory['description']
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: roomError, validationError: roomError,
onClick: model.roomCategoryList != null && onClick: model.roomCategoryList != null &&
model.roomCategoryList.length > 0 model.roomCategoryList.length > 0
@ -423,7 +423,7 @@ class _AdmissionRequestSecondScreenState
? _selectedAdmissionType['nameEn'] ? _selectedAdmissionType['nameEn']
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: admissionTypeError, validationError: admissionTypeError,
onClick: model.admissionTypeList != null && onClick: model.admissionTypeList != null &&
model.admissionTypeList.length > 0 model.admissionTypeList.length > 0

@ -242,7 +242,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
hintText: TranslationBase.of(context).branch, hintText: TranslationBase.of(context).branch,
dropDownText: _referTo != null ? _referTo['name'] : null, dropDownText: _referTo != null ? _referTo['name'] : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: branchError, validationError: branchError,
onClick: referToList != null onClick: referToList != null
? () { ? () {
@ -295,7 +295,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
? _selectedBranch['facilityName'] ? _selectedBranch['facilityName']
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: hospitalError, validationError: hospitalError,
onClick: model.branchesList != null && onClick: model.branchesList != null &&
model.branchesList.length > 0 && model.branchesList.length > 0 &&
@ -343,7 +343,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
? _selectedClinic['ClinicDescription'] ? _selectedClinic['ClinicDescription']
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: clinicError, validationError: clinicError,
onClick: _selectedBranch != null && onClick: _selectedBranch != null &&
model.clinicsList != null && model.clinicsList != null &&
@ -393,7 +393,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
dropDownText: dropDownText:
_selectedDoctor != null ? _selectedDoctor['Name'] : null, _selectedDoctor != null ? _selectedDoctor['Name'] : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
validationError: doctorError, validationError: doctorError,
onClick: _selectedClinic != null && onClick: _selectedClinic != null &&
model.doctorsList != null && model.doctorsList != null &&
@ -441,7 +441,7 @@ class _PatientMakeReferralScreenState extends State<PatientMakeReferralScreen> {
? "${DateUtils.convertDateToFormat(appointmentDate, "yyyy-MM-dd")}" ? "${DateUtils.convertDateToFormat(appointmentDate, "yyyy-MM-dd")}"
: null, : null,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
suffixIcon: Icon( suffixIcon: Icon(
Icons.calendar_today, Icons.calendar_today,
color: Colors.black, color: Colors.black,

@ -19,7 +19,9 @@ import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart'; import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/app-textfield-custom.dart'; import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/app-textfield-custom.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/auto_complete_text_field.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/text_field_error.dart'; import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/text_field_error.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/text_fields_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -146,10 +148,10 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
Container( Container(
margin: EdgeInsets.only(left: 0, right: 0, top: 15), margin: EdgeInsets.only(left: 0, right: 0, top: 15),
child: AppTextFieldCustom( child: AppTextFieldCustom(
height: 55.0, // height: 55.0,
hintText: hintText:
TranslationBase.of(context).appointmentNumber, TranslationBase.of(context).appointmentNumber,
isDropDown: false, isTextFieldHasSuffix: false,
enabled: false, enabled: false,
controller: appointmentIdController, controller: appointmentIdController,
), ),
@ -171,64 +173,45 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
child: widget child: widget
.mySelectedAssessment.selectedICD == .mySelectedAssessment.selectedICD ==
null null
? Container( ? CustomAutoCompleteTextField(
child: Column( isShowError: isFormSubmitted &&
children: [ widget.mySelectedAssessment.selectedICD == null,
AutoCompleteTextField<MasterKeyModel>( child:AutoCompleteTextField<MasterKeyModel>(
decoration: textFieldSelectorDecoration( decoration: TextFieldsUtils.textFieldSelectorDecoration(
TranslationBase.of(context) TranslationBase.of(context)
.nameOrICD, .nameOrICD, null, true, suffixIcon: Icons.search),
itemSubmitted: (item) => setState(() {
widget.mySelectedAssessment widget.mySelectedAssessment
.selectedICD != .selectedICD = item;
null icdNameController.text = '${item.code.trim()}/${item.description}';
? widget.mySelectedAssessment }),
.selectedICD.nameEn key: key,
: null, suggestions: model.listOfICD10,
true, itemBuilder: (context, suggestion) =>
icon: Icons.search, new Padding(
validationError: isFormSubmitted && child: Texts(suggestion
widget.mySelectedAssessment.selectedICD == null?TranslationBase .description +
.of(context) " / " +
.emptyMessage:null suggestion.code.toString()),
padding: EdgeInsets.all(8.0)),
itemSorter: (a, b) => 1,
itemFilter: (suggestion, input) =>
suggestion.description
.toLowerCase()
.startsWith(
input.toLowerCase()) ||
suggestion.description
.toLowerCase()
.startsWith(
input.toLowerCase()) ||
suggestion.code
.toLowerCase()
.startsWith(
input.toLowerCase()),
), ),
)
itemSubmitted: (item) => setState(() {
widget.mySelectedAssessment
.selectedICD = item;
icdNameController.text = '${item.code.trim()}/${item.description}';
}),
key: key,
suggestions: model.listOfICD10,
itemBuilder: (context, suggestion) =>
new Padding(
child: Texts(suggestion
.description +
" / " +
suggestion.code.toString()),
padding: EdgeInsets.all(8.0)),
itemSorter: (a, b) => 1,
itemFilter: (suggestion, input) =>
suggestion.description
.toLowerCase()
.startsWith(
input.toLowerCase()) ||
suggestion.description
.toLowerCase()
.startsWith(
input.toLowerCase()) ||
suggestion.code
.toLowerCase()
.startsWith(
input.toLowerCase()),
),
if (isFormSubmitted &&
widget.mySelectedAssessment.selectedICD == null)
TextFieldsError(error:TranslationBase
.of(context)
.emptyMessage ,)
],
),)
: AppTextFieldCustom( : AppTextFieldCustom(
onClick: model.listOfICD10 != null onClick: model.listOfICD10 != null
? () { ? () {
@ -245,6 +228,8 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
minLines: 1, minLines: 1,
controller: icdNameController, controller: icdNameController,
enabled: true, enabled: true,
isTextFieldHasSuffix: true,
suffixIcon: Icon(Icons.search,color: Colors.grey.shade600,),
) )
), ),
), ),
@ -252,7 +237,6 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
height: 7, height: 7,
), ),
AppTextFieldCustom( AppTextFieldCustom(
height: 55.0,
onClick: model.listOfDiagnosisCondition != null onClick: model.listOfDiagnosisCondition != null
? () { ? () {
MasterKeyDailog dialog = MasterKeyDailog( MasterKeyDailog dialog = MasterKeyDailog(
@ -291,7 +275,7 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
maxLines: 2, maxLines: 2,
minLines: 1, minLines: 1,
controller: conditionController, controller: conditionController,
isDropDown: true, isTextFieldHasSuffix: true,
enabled: false, enabled: false,
hasBorder: true, hasBorder: true,
validationError: isFormSubmitted && validationError: isFormSubmitted &&
@ -305,7 +289,6 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
height: 10, height: 10,
), ),
AppTextFieldCustom( AppTextFieldCustom(
height: 55.0,
onClick: model.listOfDiagnosisType != null onClick: model.listOfDiagnosisType != null
? () { ? () {
MasterKeyDailog dialog = MasterKeyDailog( MasterKeyDailog dialog = MasterKeyDailog(
@ -337,7 +320,7 @@ class _AddAssessmentDetailsState extends State<AddAssessmentDetails> {
maxLines: 2, maxLines: 2,
minLines: 1, minLines: 1,
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
controller: typeController, controller: typeController,
hasBorder: true, hasBorder: true,
validationError: isFormSubmitted && validationError: isFormSubmitted &&

@ -43,7 +43,7 @@ class _ExaminationsListSearchWidgetState
AppTextFieldCustom( AppTextFieldCustom(
height: MediaQuery.of(context).size.height * 0.080, height: MediaQuery.of(context).size.height * 0.080,
hintText: TranslationBase.of(context).searchExamination, hintText: TranslationBase.of(context).searchExamination,
isDropDown: true, isTextFieldHasSuffix: true,
hasBorder: false, hasBorder: false,
controller: filteredSearchController, controller: filteredSearchController,
onChanged: (value) { onChanged: (value) {

@ -8,11 +8,13 @@ import 'package:doctor_app_flutter/models/SOAP/master_key_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/app-textfield-custom.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart'; import 'package:doctor_app_flutter/widgets/shared/dialogs/master_key_dailog.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/app-textfield-custom.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/auto_complete_text_field.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/text_field_error.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/text_fields_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart'; import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -45,47 +47,13 @@ class _AddMedicationState extends State<AddMedication> {
GetMedicationResponseModel _selectedMedication; GetMedicationResponseModel _selectedMedication;
GlobalKey key = GlobalKey key =
new GlobalKey<AutoCompleteTextFieldState<GetMedicationResponseModel>>(); new GlobalKey<AutoCompleteTextFieldState<GetMedicationResponseModel>>();
bool isFormSubmitted = false; bool isFormSubmitted = false;
InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown,
{IconData icon}) {
return InputDecoration(
filled: true,
fillColor: Colors.white,
contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 10),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 0.00),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 0.00),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 0.00),
borderRadius: BorderRadius.circular(8),
),
hintText: selectedText != null ? selectedText : hintText,
suffixIcon: isDropDown ? Icon(icon ?? Icons.arrow_drop_down) : null,
hintStyle: TextStyle(
fontSize: 10,
color: Theme
.of(context)
.hintColor,
fontWeight: FontWeight.w700
),
);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
final screenSize = MediaQuery final screenSize = MediaQuery.of(context).size;
.of(context)
.size;
return FractionallySizedBox( return FractionallySizedBox(
child: BaseView<SOAPViewModel>( child: BaseView<SOAPViewModel>(
onModelReady: (model) async { onModelReady: (model) async {
@ -136,7 +104,7 @@ class _AddMedicationState extends State<AddMedication> {
height: 16, height: 16,
), ),
Container( Container(
height: screenSize.height * 0.070, // height: screenSize.height * 0.070,
child: InkWell( child: InkWell(
onTap: model.allMedicationList != null onTap: model.allMedicationList != null
? () { ? () {
@ -146,48 +114,55 @@ class _AddMedicationState extends State<AddMedication> {
} }
: null, : null,
child: _selectedMedication == null child: _selectedMedication == null
? AutoCompleteTextField< ?
GetMedicationResponseModel>(
decoration:
textFieldSelectorDecoration( CustomAutoCompleteTextField(
isShowError: isFormSubmitted &&
_selectedMedication ==null,
child: AutoCompleteTextField<
GetMedicationResponseModel>(
decoration:
TextFieldsUtils.textFieldSelectorDecoration(
TranslationBase.of(context)
.searchMedicineNameHere, null, true, suffixIcon: Icons.search),
TranslationBase.of(context) itemSubmitted: (item) =>
.searchMedicineNameHere, setState(
_selectedMedication != null () =>
? _selectedMedication _selectedMedication =
.genericName item),
: null, key: key,
true, suggestions:
icon: EvaIcons.search), model.allMedicationList,
itemSubmitted: (item) => setState( itemBuilder: (context,
() => suggestion) =>
_selectedMedication = item), new Padding(
key: key, child: Texts(suggestion
suggestions: .description +
model.allMedicationList, '/' +
itemBuilder: (context, suggestion
suggestion) => .genericName),
new Padding( padding:
child: Texts(suggestion EdgeInsets.all(8.0)),
.description + itemSorter: (a, b) => 1,
'/' + itemFilter: (suggestion,
suggestion.genericName), input) =>
padding: suggestion.genericName
EdgeInsets.all(8.0)), .toLowerCase()
itemSorter: (a, b) => 1, .startsWith(
itemFilter: (suggestion, input) => input.toLowerCase()) ||
suggestion.genericName suggestion.description
.toLowerCase() .toLowerCase()
.startsWith( .startsWith(
input.toLowerCase()) || input
suggestion.description .toLowerCase()) ||
.toLowerCase() suggestion.keywords
.startsWith( .toLowerCase()
input.toLowerCase()) || .startsWith(
suggestion.keywords input.toLowerCase()),
.toLowerCase() ),
.startsWith(
input.toLowerCase()),
) )
: AppTextFieldCustom( : AppTextFieldCustom(
hintText: _selectedMedication != null hintText: _selectedMedication != null
@ -198,13 +173,12 @@ class _AddMedicationState extends State<AddMedication> {
.searchMedicineNameHere, .searchMedicineNameHere,
minLines: 2, minLines: 2,
maxLines: 2, maxLines: 2,
isTextFieldHasSuffix: true,
suffixIcon: Icon(Icons.search,color: Colors.grey.shade600,),
enabled: false, enabled: false,
), ),
), ),
), ),
if (isFormSubmitted &&
_selectedMedication == null)
Container(child: CustomValidationError()),
SizedBox( SizedBox(
height: 5, height: 5,
), ),
@ -246,7 +220,7 @@ class _AddMedicationState extends State<AddMedication> {
TranslationBase.of(context).doseTime, TranslationBase.of(context).doseTime,
maxLines: 2, maxLines: 2,
minLines: 2, minLines: 2,
isDropDown: true, isTextFieldHasSuffix: true,
controller: doseController, controller: doseController,
validationError:isFormSubmitted && validationError:isFormSubmitted &&
_selectedMedicationDose == null?TranslationBase _selectedMedicationDose == null?TranslationBase
@ -258,7 +232,7 @@ class _AddMedicationState extends State<AddMedication> {
), ),
AppTextFieldCustom( AppTextFieldCustom(
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
onClick: model.medicationStrengthList != null onClick: model.medicationStrengthList != null
? () { ? () {
MasterKeyDailog dialog = MasterKeyDailog dialog =
@ -308,7 +282,7 @@ class _AddMedicationState extends State<AddMedication> {
), ),
AppTextFieldCustom( AppTextFieldCustom(
enabled: false, enabled: false,
isDropDown: true, isTextFieldHasSuffix: true,
onClick: model.medicationRouteList != null onClick: model.medicationRouteList != null
? () { ? () {
MasterKeyDailog dialog = MasterKeyDailog dialog =
@ -392,7 +366,7 @@ class _AddMedicationState extends State<AddMedication> {
enabled: false, enabled: false,
maxLines: 2, maxLines: 2,
minLines: 2, minLines: 2,
isDropDown: true, isTextFieldHasSuffix: true,
controller: frequencyController, controller: frequencyController,
validationError:isFormSubmitted && validationError:isFormSubmitted &&
_selectedMedicationFrequency == null?TranslationBase _selectedMedicationFrequency == null?TranslationBase

@ -81,7 +81,7 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState
AppTextFieldCustom( AppTextFieldCustom(
height: MediaQuery.of(context).size.height * 0.070, height: MediaQuery.of(context).size.height * 0.070,
hintText: TranslationBase.of(context).selectAllergy, hintText: TranslationBase.of(context).selectAllergy,
isDropDown: true, isTextFieldHasSuffix: true,
hasBorder: false, hasBorder: false,
// controller: filteredSearchController, // controller: filteredSearchController,
onChanged: (value) { onChanged: (value) {
@ -284,7 +284,7 @@ class _MasterKeyCheckboxSearchAllergiesWidgetState
); );
} }
: null, : null,
isDropDown: true, isTextFieldHasSuffix: true,
hintText: hintText:
TranslationBase TranslationBase
.of(context) .of(context)

@ -75,7 +75,7 @@ class _MasterKeyCheckboxSearchWidgetState extends State<MasterKeyCheckboxSearchW
AppTextFieldCustom( AppTextFieldCustom(
height: MediaQuery.of(context).size.height * 0.070, height: MediaQuery.of(context).size.height * 0.070,
hintText: TranslationBase.of(context).searchHistory, hintText: TranslationBase.of(context).searchHistory,
isDropDown: true, isTextFieldHasSuffix: true,
hasBorder: false, hasBorder: false,
// controller: filteredSearchController, // controller: filteredSearchController,
onChanged: (value) { onChanged: (value) {

@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/text_field_error.dart'; import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/text_field_error.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/text_fields_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import '../../app_texts_widget.dart'; import '../../app_texts_widget.dart';
@ -10,7 +11,7 @@ class AppTextFieldCustom extends StatefulWidget {
final Function onClick; final Function onClick;
final String hintText; final String hintText;
final TextEditingController controller; final TextEditingController controller;
final bool isDropDown; final bool isTextFieldHasSuffix;
final bool hasBorder; final bool hasBorder;
final String dropDownText; final String dropDownText;
final Icon suffixIcon; final Icon suffixIcon;
@ -29,7 +30,7 @@ class AppTextFieldCustom extends StatefulWidget {
this.hintText, this.hintText,
this.controller, this.controller,
this.hasBorder = true, this.hasBorder = true,
this.isDropDown = false, this.isTextFieldHasSuffix = false,
this.dropDownText, this.dropDownText,
this.suffixIcon, this.suffixIcon,
this.dropDownColor, this.dropDownColor,
@ -54,7 +55,7 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
Container( Container(
height: widget.height != 0 ? widget.height + 8 : null, height: widget.height != 0 ? widget.height + 8 : null,
decoration: widget.hasBorder decoration: widget.hasBorder
? containerBorderDecoration( ? TextFieldsUtils.containerBorderDecoration(
Color(0Xffffffff), Color(0Xffffffff),
widget.validationError == null widget.validationError == null
? Color(0xFFEFEFEF) ? Color(0xFFEFEFEF)
@ -88,7 +89,7 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
widget.dropDownText == null widget.dropDownText == null
? TextField( ? TextField(
textAlign: TextAlign.left, textAlign: TextAlign.left,
decoration: textFieldSelectorDecoration( decoration: TextFieldsUtils.textFieldSelectorDecoration(
widget.hintText, null, true), widget.hintText, null, true),
style: TextStyle( style: TextStyle(
fontSize: SizeConfig.textMultiplier * 1.7, fontSize: SizeConfig.textMultiplier * 1.7,
@ -120,7 +121,7 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
), ),
), ),
), ),
widget.isDropDown widget.isTextFieldHasSuffix
? widget.suffixIcon != null ? widget.suffixIcon != null
? widget.suffixIcon ? widget.suffixIcon
: Icon( : Icon(
@ -139,57 +140,5 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
], ],
); );
} }
BoxDecoration containerBorderDecoration(
Color containerColor, Color borderColor,
{double borderWidth = -1}) {
return BoxDecoration(
color: containerColor,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.all(Radius.circular(12)),
border: Border.fromBorderSide(BorderSide(
color: borderColor,
width: borderWidth == -1 ? 2.0 : borderWidth,
)),
);
}
static InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown,
{Icon suffixIcon, Color dropDownColor}) {
return InputDecoration(
isDense: true,
contentPadding: EdgeInsets.symmetric(horizontal: 0, vertical: 0),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
disabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
border: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
/*focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),*/
hintText: selectedText != null ? selectedText : hintText,
hintStyle: TextStyle(
fontSize: 14,
color: Colors.grey.shade600,
),
);
}
} }

@ -0,0 +1,44 @@
import 'package:autocomplete_textfield/autocomplete_textfield.dart';
import 'package:doctor_app_flutter/core/model/get_medication_response_model.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/text_field_error.dart';
import 'package:doctor_app_flutter/widgets/shared/user-guid/text_fields/text_fields_utils.dart';
import 'package:flutter/material.dart';
import '../../Text.dart';
class CustomAutoCompleteTextField extends StatelessWidget {
final bool isShowError;
final Widget child;
const CustomAutoCompleteTextField({
Key key,
this.isShowError,
this.child,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: [
Container(
decoration: TextFieldsUtils.containerBorderDecoration(
Color(0Xffffffff),
isShowError ? Colors.red.shade700 : Color(0xFFEFEFEF),
),
padding:
EdgeInsets.only(top: 0.2, bottom: 2.0, left: 8.0, right: 0.0),
child: child,
),
if (isShowError)
TextFieldsError(
error: TranslationBase.of(context).emptyMessage,
)
],
),
);
}
}

@ -0,0 +1,59 @@
import 'package:flutter/material.dart';
class TextFieldsUtils{
static BoxDecoration containerBorderDecoration(
Color containerColor, Color borderColor,
{double borderWidth = -1}) {
return BoxDecoration(
color: containerColor,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.all(Radius.circular(12)),
border: Border.fromBorderSide(BorderSide(
color: borderColor,
width: borderWidth == -1 ? 2.0 : borderWidth,
)),
);
}
static InputDecoration textFieldSelectorDecoration(
String hintText, String selectedText, bool isDropDown,
{IconData suffixIcon, Color dropDownColor}) {
return InputDecoration(
isDense: true,
contentPadding: EdgeInsets.symmetric(horizontal: 0, vertical: 0),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
disabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
border: UnderlineInputBorder(
borderSide: BorderSide(color: Color(0Xffffffff)),
),
/*focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8),
),*/
hintText: selectedText != null ? selectedText : hintText,
suffixIcon: Icon(suffixIcon??null, color: Colors.grey.shade600,),
hintStyle: TextStyle(
fontSize: 14,
color: Colors.grey.shade600,
),
);
}
}
Loading…
Cancel
Save