You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RSGDoctorApp/lib/widgets/doctor/my_referral_patient_widget....

460 lines
20 KiB
Dart

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/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: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<MyReferralPatientWidget> {
bool _isLoading = false;
final _formKey = GlobalKey<FormState>();
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: <Widget>[
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: Button(
onTap: () 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);
}
}
},
title: TranslationBase.of(context).replay,
loading: widget.model.state == ViewState.BusyLocal,
),
)
],
),
),
isExpand: widget.isExpand,
),
],
),
);
}
}