import 'package:doctor_app_flutter/config/size_config.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_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import '../../lookups/patient_lookup.dart'; import '../../models/patient_model.dart'; import '../../routes.dart'; import '../../widgets/patients/dynamic_elements.dart'; class PatientSearchScreen extends StatefulWidget { @override _PatientSearchScreenState createState() => _PatientSearchScreenState(); } class _PatientSearchScreenState extends State { String _selectedType = '1'; String _selectedLocation = '1'; final _patientSearchForm = GlobalKey(); var _patientSearchFormValues = PatientModel( ProjectID: 12, ClinicID: 17, DoctorID: 98129, FirstName: "0", MiddleName: "0", LastName: "0", PatientMobileNumber: "0", PatientIdentificationID: "0", PatientID: 0, From: "0", To: "0", LanguageID: 2, stamp: "2020-03-02T13:56:39.170Z", IPAdress: "11.11.11.11", VersionID: 1.2, Channel: 9, TokenID: "2Fi7HoIHB0eDyekVa6tCJg==", SessionID: "5G0yXn0Jnq", IsLoginForDoctorApp: true, PatientOutSA: false); void _saveForm() { _patientSearchForm.currentState.save(); // Navigator.pushNamed(context,routeName) print(_patientSearchFormValues.From); print(_patientSearchFormValues.To); Navigator.of(context).pushNamed(PATIENTS, arguments: { 'patientSearchForm': _patientSearchFormValues, 'selectedType': _selectedType }); } @override Widget build(BuildContext context) { return AppScaffold( appBarTitle: "SEARCH FOR PATIENT", body: ListView( children: [ RoundedContainer( child: Column( children: [ Icon( Icons.search, size: SizeConfig.imageSizeMultiplier * 15, ), Container( padding: EdgeInsets.all(15), width: SizeConfig.screenWidth * 1, child: Form( key: _patientSearchForm, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 5, ), RoundedContainer( margin: 0, showBorder: true, raduis: 30, borderColor: Color(0xff707070), width: double.infinity, child: Padding( padding: EdgeInsets.only( top: SizeConfig.widthMultiplier * 0.9, bottom: SizeConfig.widthMultiplier * 0.9, right: SizeConfig.widthMultiplier * 3, left: SizeConfig.widthMultiplier * 3), child: Row( mainAxisSize: MainAxisSize.max, children: [ Expanded( // add Expanded to have your dropdown button fill remaining space child: DropdownButton( isExpanded: true, value: _selectedType, iconSize: 40, elevation: 16, selectedItemBuilder: (BuildContext context) { return PATIENT_TYPE.map((item) { return Row( mainAxisSize: MainAxisSize.max, children: [ AppText( item['text'], fontSize: SizeConfig.textMultiplier * 2.1, ), ], ); }).toList(); }, onChanged: (String newValue) => { setState(() { _selectedType = newValue; }) }, items: PATIENT_TYPE.map((item) { return DropdownMenuItem( child: Text( '${item['text']}', textAlign: TextAlign.end, ), value: item['val'], ); }).toList(), ), ), ], ), ), ), SizedBox( height: 10, ), TextFormField( decoration: InputDecoration( hintText: 'First Name', hintStyle: TextStyle( fontSize: SizeConfig.textMultiplier * 2), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30)), borderSide: BorderSide(color: Color(0xff707070)), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30)), borderSide: BorderSide( color: Theme.of(context).primaryColor), ) //BorderRadius.all(Radius.circular(20)); ), onSaved: (value) { _patientSearchFormValues.FirstName = value; }, validator: (value) { if (value.isEmpty) { return 'Please enter some text'; } return null; }, ), SizedBox( height: 10, ), TextFormField( decoration: InputDecoration( hintText: 'Middle Name', hintStyle: TextStyle( fontSize: SizeConfig.textMultiplier * 2), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30)), borderSide: BorderSide(color: Color(0xff707070)), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30)), borderSide: BorderSide( color: Theme.of(context).primaryColor), ) //BorderRadius.all(Radius.circular(20)); ), validator: (value) { if (value.isEmpty) { return 'Please enter some text'; } return null; }, onSaved: (value) { _patientSearchFormValues.MiddleName = value; }, ), SizedBox( height: 10, ), TextFormField( decoration: InputDecoration( hintText: 'Last Name', hintStyle: TextStyle( fontSize: SizeConfig.textMultiplier * 2), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30)), borderSide: BorderSide(color: Color(0xff707070)), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30.0)), borderSide: BorderSide( color: Theme.of(context).primaryColor), ) //BorderRadius.all(Radius.circular(20)); ), validator: (value) { if (value.isEmpty) { return 'Please enter some text'; } return null; }, onSaved: (value) { _patientSearchFormValues.LastName = value; }, ), SizedBox( height: 10, ), TextFormField( keyboardType: TextInputType.number, decoration: InputDecoration( hintText: 'Phone Number', hintStyle: TextStyle( fontSize: SizeConfig.textMultiplier * 2), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30)), borderSide: BorderSide(color: Color(0xff707070)), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30.0)), borderSide: BorderSide( color: Theme.of(context).primaryColor), ) //BorderRadius.all(Radius.circular(20)); ), validator: (value) { if (value.isEmpty) { return 'Please enter some text'; } return null; }, onSaved: (value) { _patientSearchFormValues.PatientMobileNumber = value; }, ), SizedBox( height: 10, ), TextFormField( keyboardType: TextInputType.number, decoration: InputDecoration( hintText: 'Patiant ID', hintStyle: TextStyle( fontSize: SizeConfig.textMultiplier * 2), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30)), borderSide: BorderSide(color: Color(0xff707070)), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30.0)), borderSide: BorderSide( color: Theme.of(context).primaryColor), ) //BorderRadius.all(Radius.circular(20)); ), validator: (value) { if (value.isEmpty) { return 'Please enter some text'; } return null; }, onSaved: (value) { _patientSearchFormValues.PatientID = int.parse(value); }), SizedBox( height: 10, ), TextFormField( keyboardType: TextInputType.number, decoration: InputDecoration( hintText: 'Patiant File', hintStyle: TextStyle( fontSize: SizeConfig.textMultiplier * 2), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30)), borderSide: BorderSide(color: Color(0xff707070)), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(30.0)), borderSide: BorderSide( color: Theme.of(context).primaryColor), ) //BorderRadius.all(Radius.circular(20)); ), validator: (value) { if (value.isEmpty) { return 'Please enter some text'; } return null; }, onSaved: (value) { // _patientSearchFormValues. = value; }, ), (!(_selectedType == '3' || _selectedType == '5')) ? DynamicElements(_patientSearchFormValues) : SizedBox( height: 0, ), SizedBox( height: 10, ), RoundedContainer( margin: 0, showBorder: true, raduis: 30, borderColor: Color(0xff707070), width: double.infinity, child: Padding( padding: EdgeInsets.only( top: SizeConfig.widthMultiplier * 0.9, bottom: SizeConfig.widthMultiplier * 0.9, right: SizeConfig.widthMultiplier * 3, left: SizeConfig.widthMultiplier * 3), child: Row( mainAxisSize: MainAxisSize.max, children: [ Expanded( // add Expanded to have your dropdown button fill remaining space child: DropdownButton( isExpanded: true, value: _selectedLocation, iconSize: 40, elevation: 16, selectedItemBuilder: (BuildContext context) { return LOCATIONS.map((item) { return Row( mainAxisSize: MainAxisSize.max, children: [ AppText( item['text'], fontSize: SizeConfig.textMultiplier * 2.1, ), ], ); }).toList(); }, onChanged: (String newValue) => { setState(() { _selectedLocation = newValue; }) }, items: LOCATIONS.map((item) { return DropdownMenuItem( child: Text( '${item['text']}', textAlign: TextAlign.end, ), value: item['val'], ); }).toList(), ), ), ], ), ), ), Container( child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Checkbox( value: true, activeColor: Color(0xffFFDDD9), onChanged: (bool newValue) {}), AppText('Only Arrived Patient', fontSize: SizeConfig.textMultiplier * 2), ])), SizedBox( height: 10, ), ], ), ), ) ], ), ), Container( margin: EdgeInsets.all(SizeConfig.widthMultiplier * 5), child: Wrap( alignment: WrapAlignment.center, children: [ AppButton( title: "Search", color: Color(0xff58434F), onPressed: () { print("Tapped Me"); }, ), ], ), ) ], )); } }