import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart'; import 'package:doctor_app_flutter/providers/referral_patient_provider.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/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/TextFields.dart'; import 'package:doctor_app_flutter/widgets/shared/app_button.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/card_with_bgNew_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; class MyReferralPatientWidget extends StatefulWidget { final MyReferralPatientModel myReferralPatientModel; MyReferralPatientWidget({Key key, this.myReferralPatientModel}); @override _MyReferralPatientWidgetState createState() => _MyReferralPatientWidgetState(); } class _MyReferralPatientWidgetState extends State { bool _showDetails = false; 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 CardWithBgWidgetNew( widget: Container( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ InkWell( onTap: () { setState(() { _showDetails = !_showDetails; }); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppText( '${widget.myReferralPatientModel.firstName} ${widget.myReferralPatientModel.lastName}', fontSize: 2.5 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, ), Icon(_showDetails ? Icons.keyboard_arrow_up : Icons.keyboard_arrow_down), ], ), ), !_showDetails ? Container() : AnimatedContainer( duration: Duration(milliseconds: 200), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 5, ), Divider( color: Color(0xFF000000), height: 0.5, ), Table( border: TableBorder.symmetric( inside: BorderSide(width: 0.5), ), children: [ TableRow(children: [ Container( margin: EdgeInsets.all(2.5), padding: EdgeInsets.all(5), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context).fileNo, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, ), SizedBox( height: 5, ), AppText( '${widget.myReferralPatientModel.referringDoctor}', fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.w300, ) ], ), ), Container( margin: EdgeInsets.only( left: 4, top: 2.5, right: 2.5, bottom: 2.5), padding: EdgeInsets.all(5), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context) .referralDoctor, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, ), SizedBox( height: 5, ), AppText( widget.myReferralPatientModel .referringClinicDescription, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.w300, ) ], ), ), ]), TableRow(children: [ Container( margin: EdgeInsets.all(2.5), padding: EdgeInsets.all(5), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context) .referringClinic, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, ), SizedBox( height: 5, ), AppText( '${widget.myReferralPatientModel.referringClinicDescription}', fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.w300, ) ], ), ), Container( margin: EdgeInsets.only( left: 4, top: 2.5, right: 2.5, bottom: 2.5), padding: EdgeInsets.all(5), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context).frequency, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, ), SizedBox( height: 5, ), AppText( widget.myReferralPatientModel .frequencyDescription, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.w300, ) ], ), ) ]), TableRow( children: [ Container( margin: EdgeInsets.all(2.5), padding: EdgeInsets.all(5), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context).priority, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, ), SizedBox( height: 5, ), AppText( '${widget.myReferralPatientModel.priorityDescription}', fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.w300, ) ], ), ), Container( margin: EdgeInsets.only( left: 4, top: 2.5, right: 2.5, bottom: 2.5), padding: EdgeInsets.all(5), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context) .maxResponseTime, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, ), SizedBox( height: 5, ), AppText( Helpers.getDateFormatted(widget .myReferralPatientModel .mAXResponseTime), fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.w300, ) ], ), ) ], ), ], ), Divider( color: Color(0xFF000000), height: 0.5, ), SizedBox( height: 5, ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AppText( TranslationBase.of(context) .clinicDetailsandRemarks, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, textAlign: TextAlign.start, ), Texts( '${widget.myReferralPatientModel.referringDoctorRemarks}', style: "bodyText1", readMore: true, textAlign: TextAlign.start, maxLength: 100) ], ), SizedBox( height: 5, ), AppText( TranslationBase.of(context).answerSuggestions, fontSize: 1.7 * SizeConfig.textMultiplier, fontWeight: FontWeight.bold, textAlign: TextAlign.start, ), SizedBox( height: 5, ), Form( key: _formKey, child: TextFields( maxLines: 2, minLines: 2, hintText: TranslationBase.of(context).answerThePatient, fontWeight: FontWeight.normal, initialValue: widget.myReferralPatientModel .referredDoctorRemarks ?? '', readOnly: _isLoading, validator: (value) { if (value.isEmpty) return TranslationBase.of(context) .pleaseEnterAnswer; else return null; }, ), ), SizedBox(height: 10.0), SizedBox(height: 10.0), Container( width: double.infinity, margin: EdgeInsets.only(left: 10, right: 10), child: Button( onTap: () async { final form = _formKey.currentState; if (form.validate()) { setState(() { _isLoading = true; }); try { await Provider.of( context, listen: false) .replay(answerController.text.toString(), widget.myReferralPatientModel); setState(() { _isLoading = false; }); DrAppToastMsg.showSuccesToast( 'Reply Successfully'); } catch (e) { setState(() { _isLoading = false; }); DrAppToastMsg.showErrorToast(e); } } }, title: TranslationBase.of(context).replay, loading: _isLoading, ), ) ], ), ) ], ), ), ); } }