import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/viewModel/referral_view_model.dart'; import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart'; import 'package:doctor_app_flutter/util/dr_app_toast_msg.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/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.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/card_with_bgNew_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; class MyReferralPatientWidget extends StatefulWidget { final MyReferralPatientModel myReferralPatientModel; final ReferralPatientViewModel model; final bool isExpand; final Function expandClick; MyReferralPatientWidget( {Key key, this.myReferralPatientModel, this.model, this.isExpand, this.expandClick}); @override _MyReferralPatientWidgetState createState() => _MyReferralPatientWidgetState(); } class _MyReferralPatientWidgetState extends State { bool _isLoading = false; final _formKey = GlobalKey(); String error; TextEditingController answerController; @override void initState() { answerController = new TextEditingController( text: widget.myReferralPatientModel.referredDoctorRemarks ?? ''); super.initState(); } @override Widget build(BuildContext context) { return Container( width: double.infinity, margin: EdgeInsets.symmetric(horizontal: 8), padding: EdgeInsets.only(left: 0, top: 8, right: 0, bottom: 0), decoration: BoxDecoration( shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(8), border: Border.fromBorderSide(BorderSide( color: Color(0xffCCCCCC), width: 2, )), color: Color(0xffffffff), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ HeaderBodyExpandableNotifier( headerWidget: Column( children: [ Container( padding: EdgeInsets.only(left: 16, top: 8, right: 8, bottom: 0), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( color: Color(0xFFB8382C), padding: EdgeInsets.symmetric( vertical: 4, horizontal: 4), child: AppText( '${widget.myReferralPatientModel.priorityDescription}', fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, textAlign: TextAlign.start, color: Colors.white, ), ), SizedBox( height: 10, ), AppText( '${widget.myReferralPatientModel.firstName} ${widget.myReferralPatientModel.middleName} ${widget.myReferralPatientModel.lastName}', fontSize: 2 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, textAlign: TextAlign.start, color: Colors.black, ), SizedBox( height: 10, ), Row( children: [ AppText( TranslationBase.of(context).fileNo, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, textAlign: TextAlign.start, color: Colors.black, ), SizedBox( width: 20, ), AppText( '${widget.myReferralPatientModel.referralDoctor}', fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.normal, textAlign: TextAlign.start, color: Colors.black, ), ], ), ], ), ), Container( margin: EdgeInsets.symmetric(horizontal: 8, vertical: 8), child: InkWell( onTap: widget.expandClick, child: Image.asset( "assets/images/ic_circle_arrow.png", width: 25, height: 25, color: Colors.black, ), ), ) ], ), ), SizedBox( height: 10, ), ], ), bodyWidget: Container( child: Column( children: [ const Divider( color: Color(0xffCCCCCC), height: 1, thickness: 2, indent: 0, endIndent: 0, ), Container( height: 1.8 * SizeConfig.textMultiplier * 6, padding: EdgeInsets.only(left: 16, top: 0, right: 8, bottom: 0), child: Expanded( child: Row( children: [ Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 8, ), SizedBox( child: AppText( TranslationBase.of(context).referralDoctor, fontSize: 1.9 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, textAlign: TextAlign.start, color: Colors.black, ), ), SizedBox( height: 4, ), SizedBox( child: AppText( '${widget.myReferralPatientModel.referringDoctorName}', fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.normal, textAlign: TextAlign.start, color: Colors.black, ), ), SizedBox( height: 8, ), ], ), ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8), child: SizedBox( child: Container( color: Color(0xffCCCCCC), ), width: 1, ), ), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 8, ), SizedBox( child: AppText( TranslationBase.of(context).referringClinic, fontSize: 1.9 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, textAlign: TextAlign.start, color: Colors.black, ), ), SizedBox( height: 4, ), SizedBox( child: AppText( '${widget.myReferralPatientModel.referringClinicDescription}', fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.normal, textAlign: TextAlign.start, color: Colors.black, ), ), SizedBox( height: 8, ), ], ), ), ], ), ), ), const Divider( color: Color(0xffCCCCCC), height: 1, thickness: 2, indent: 0, endIndent: 0, ), SizedBox( height: 10, ), Container( height: 1.8 * SizeConfig.textMultiplier * 6, padding: EdgeInsets.only(left: 16, top: 0, right: 8, bottom: 0), child: Expanded( child: Row( children: [ Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 8, ), SizedBox( child: AppText( TranslationBase.of(context).frequency, fontSize: 1.9 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, textAlign: TextAlign.start, color: Colors.black, ), ), SizedBox( height: 4, ), SizedBox( child: AppText( '${widget.myReferralPatientModel.frequencyDescription}', fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.normal, textAlign: TextAlign.start, color: Colors.black, ), ), SizedBox( height: 8, ), ], ), ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8), child: SizedBox( child: Container( color: Color(0xffCCCCCC), ), width: 1, ), ), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 8, ), SizedBox( child: AppText( TranslationBase.of(context).maxResponseTime, fontSize: 1.9 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, textAlign: TextAlign.start, color: Colors.black, ), ), SizedBox( height: 4, ), SizedBox( child: AppText( '${DateFormat('dd/MM/yyyy').format(widget.myReferralPatientModel.mAXResponseTime)}', fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.normal, textAlign: TextAlign.start, color: Colors.black, ), ), SizedBox( height: 8, ), ], ), ), ], ), ), ), const Divider( color: Color(0xffCCCCCC), height: 1, thickness: 2, indent: 0, endIndent: 0, ), SizedBox( height: 10, ), Container( padding: EdgeInsets.only(left: 16, top: 0, right: 8, bottom: 0), child: Expanded( child: Row( children: [ Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 8, ), SizedBox( child: AppText( TranslationBase.of(context) .clinicDetailsandRemarks, fontSize: 1.9 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, textAlign: TextAlign.start, color: Colors.black, ), ), SizedBox( height: 4, ), SizedBox( child: AppText( '${widget.myReferralPatientModel.referringDoctorRemarks}', fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.normal, textAlign: TextAlign.start, color: Colors.black, ), ), SizedBox( height: 8, ), ], ), ), ], ), ), ), const Divider( color: Color(0xffCCCCCC), height: 1, thickness: 2, indent: 0, endIndent: 0, ), SizedBox( height: 10, ), Container( color: Colors.white, padding: EdgeInsets.all(8), child: Form( key: _formKey, child: TextFields( controller: answerController, maxLines: 3, minLines: 2, hintText: TranslationBase.of(context).answerThePatient, fontWeight: FontWeight.normal, readOnly: _isLoading, validator: (value) { if (value.isEmpty) return TranslationBase.of(context) .pleaseEnterAnswer; else return null; }, ), ), ), Container( width: double.infinity, margin: EdgeInsets.only(left: 10, right: 10), child: AppButton( title : TranslationBase.of(context).replay, onPressed: () async { final form = _formKey.currentState; if (form.validate()) { try { await widget.model.replay( answerController.text.toString(), widget.myReferralPatientModel); DrAppToastMsg.showSuccesToast( TranslationBase.of(context).replySuccessfully); } catch (e) { DrAppToastMsg.showErrorToast(e); } } }, loading: widget.model.state == ViewState.BusyLocal, ), ) ], ), ), isExpand: widget.isExpand, ), ], ), ); } }