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....

462 lines
20 KiB
Dart

import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/enum/view_state.dart';
import 'package:doctor_app_flutter/core/viewModel/referral_view_model.dart';
import 'package:doctor_app_flutter/core/model/patient/my_referral/my_referral_patient_model.dart';
import 'package:doctor_app_flutter/utils/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/utils/translations_delegate_base_utils.dart';
import 'package:doctor_app_flutter/widgets/shared/text_fields/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/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 = TextEditingController();
@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: 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!,
),
],
),
);
}
}