Merge branch 'development' of https://gitlab.com/Cloud_Solution/doctor_app_flutter into fix-issues

merge-requests/439/head
hussam al-habibeh 5 years ago
commit 3dcc586a6f

@ -14,7 +14,8 @@
<application <application
android:name="io.flutter.app.FlutterApplication" android:name="io.flutter.app.FlutterApplication"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="doctor_app_flutter"> android:roundIcon="@mipmap/ic_launcher_round"
android:label="Doctors app">
<activity android:name=".ui.VideoCallActivity"></activity> <activity android:name=".ui.VideoCallActivity"></activity>
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#ffffff</color>
</resources>

@ -1,122 +1,128 @@
{ {
"images" : [ "images":[
{ {
"size" : "20x20", "idiom":"iphone",
"idiom" : "iphone", "size":"20x20",
"filename" : "Icon-App-20x20@2x.png", "scale":"2x",
"scale" : "2x" "filename":"Icon-App-20x20@2x.png"
}, },
{ {
"size" : "20x20", "idiom":"iphone",
"idiom" : "iphone", "size":"20x20",
"filename" : "Icon-App-20x20@3x.png", "scale":"3x",
"scale" : "3x" "filename":"Icon-App-20x20@3x.png"
}, },
{ {
"size" : "29x29", "idiom":"iphone",
"idiom" : "iphone", "size":"29x29",
"filename" : "Icon-App-29x29@1x.png", "scale":"1x",
"scale" : "1x" "filename":"Icon-App-29x29@1x.png"
}, },
{ {
"size" : "29x29", "idiom":"iphone",
"idiom" : "iphone", "size":"29x29",
"filename" : "Icon-App-29x29@2x.png", "scale":"2x",
"scale" : "2x" "filename":"Icon-App-29x29@2x.png"
}, },
{ {
"size" : "29x29", "idiom":"iphone",
"idiom" : "iphone", "size":"29x29",
"filename" : "Icon-App-29x29@3x.png", "scale":"3x",
"scale" : "3x" "filename":"Icon-App-29x29@3x.png"
}, },
{ {
"size" : "40x40", "idiom":"iphone",
"idiom" : "iphone", "size":"40x40",
"filename" : "Icon-App-40x40@2x.png", "scale":"2x",
"scale" : "2x" "filename":"Icon-App-40x40@2x.png"
}, },
{ {
"size" : "40x40", "idiom":"iphone",
"idiom" : "iphone", "size":"40x40",
"filename" : "Icon-App-40x40@3x.png", "scale":"3x",
"scale" : "3x" "filename":"Icon-App-40x40@3x.png"
}, },
{ {
"size" : "60x60", "idiom":"iphone",
"idiom" : "iphone", "size":"60x60",
"filename" : "Icon-App-60x60@2x.png", "scale":"2x",
"scale" : "2x" "filename":"Icon-App-60x60@2x.png"
}, },
{ {
"size" : "60x60", "idiom":"iphone",
"idiom" : "iphone", "size":"60x60",
"filename" : "Icon-App-60x60@3x.png", "scale":"3x",
"scale" : "3x" "filename":"Icon-App-60x60@3x.png"
}, },
{ {
"size" : "20x20", "idiom":"iphone",
"idiom" : "ipad", "size":"76x76",
"filename" : "Icon-App-20x20@1x.png", "scale":"2x",
"scale" : "1x" "filename":"Icon-App-76x76@2x.png"
}, },
{ {
"size" : "20x20", "idiom":"ipad",
"idiom" : "ipad", "size":"20x20",
"filename" : "Icon-App-20x20@2x.png", "scale":"1x",
"scale" : "2x" "filename":"Icon-App-20x20@1x.png"
}, },
{ {
"size" : "29x29", "idiom":"ipad",
"idiom" : "ipad", "size":"20x20",
"filename" : "Icon-App-29x29@1x.png", "scale":"2x",
"scale" : "1x" "filename":"Icon-App-20x20@2x.png"
}, },
{ {
"size" : "29x29", "idiom":"ipad",
"idiom" : "ipad", "size":"29x29",
"filename" : "Icon-App-29x29@2x.png", "scale":"1x",
"scale" : "2x" "filename":"Icon-App-29x29@1x.png"
}, },
{ {
"size" : "40x40", "idiom":"ipad",
"idiom" : "ipad", "size":"29x29",
"filename" : "Icon-App-40x40@1x.png", "scale":"2x",
"scale" : "1x" "filename":"Icon-App-29x29@2x.png"
}, },
{ {
"size" : "40x40", "idiom":"ipad",
"idiom" : "ipad", "size":"40x40",
"filename" : "Icon-App-40x40@2x.png", "scale":"1x",
"scale" : "2x" "filename":"Icon-App-40x40@1x.png"
}, },
{ {
"size" : "76x76", "idiom":"ipad",
"idiom" : "ipad", "size":"40x40",
"filename" : "Icon-App-76x76@1x.png", "scale":"2x",
"scale" : "1x" "filename":"Icon-App-40x40@2x.png"
}, },
{ {
"size" : "76x76", "idiom":"ipad",
"idiom" : "ipad", "size":"76x76",
"filename" : "Icon-App-76x76@2x.png", "scale":"1x",
"scale" : "2x" "filename":"Icon-App-76x76@1x.png"
}, },
{ {
"size" : "83.5x83.5", "idiom":"ipad",
"idiom" : "ipad", "size":"76x76",
"filename" : "Icon-App-83.5x83.5@2x.png", "scale":"2x",
"scale" : "2x" "filename":"Icon-App-76x76@2x.png"
},
{
"idiom":"ipad",
"size":"83.5x83.5",
"scale":"2x",
"filename":"Icon-App-83.5x83.5@2x.png"
}, },
{ {
"size" : "1024x1024", "size" : "1024x1024",
"idiom" : "ios-marketing", "idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png", "scale" : "1x",
"scale" : "1x" "filename" : "ItunesArtwork@2x.png"
} }
], ],
"info" : { "info":{
"version" : 1, "version":1,
"author" : "xcode" "author":"easyappicon"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

After

Width:  |  Height:  |  Size: 998 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

@ -121,7 +121,7 @@ const GET_DASHBOARD =
const GET_SICKLEAVE_STATISTIC = const GET_SICKLEAVE_STATISTIC =
'Services/DoctorApplication.svc/REST/PreSickLeaveStatistics'; 'Services/DoctorApplication.svc/REST/PreSickLeaveStatistics';
const ARRIVED_PATIENT_URL = const ARRIVED_PATIENT_URL =
'Services/DoctorApplication.svc/REST/PatientArrivalList'; 'Services/DoctorApplication.svc/REST/PatientArrivalList';
const ADD_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/PostSickLeave'; const ADD_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/PostSickLeave';
const GET_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/GetAllSickLeaves'; const GET_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/GetAllSickLeaves';
const EXTEND_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/ExtendSickLeave'; const EXTEND_SICK_LEAVE = 'Services/DoctorApplication.svc/REST/ExtendSickLeave';
@ -143,6 +143,9 @@ const GET_PROCEDURE_LIST =
'Services/DoctorApplication.svc/REST/GetOrderedProcedure'; 'Services/DoctorApplication.svc/REST/GetOrderedProcedure';
const POST_PROCEDURE_LIST = 'Services/DoctorApplication.svc/REST/PostProcedure'; const POST_PROCEDURE_LIST = 'Services/DoctorApplication.svc/REST/PostProcedure';
const GET_PATIENT_ARRIVAL_LIST =
'Services/DoctorApplication.svc/REST/PatientArrivalList';
///Lab Order ///Lab Order
const GET_Patient_LAB_ORDERS = 'Services/Patients.svc/REST/GetPatientLabOrders'; const GET_Patient_LAB_ORDERS = 'Services/Patients.svc/REST/GetPatientLabOrders';
const GET_Patient_LAB_SPECIAL_RESULT = const GET_Patient_LAB_SPECIAL_RESULT =
@ -244,6 +247,7 @@ const GET_PRESCRIPTION_REPORT_ENH =
'Services/Patients.svc/REST/GetPrescriptionReport_enh'; 'Services/Patients.svc/REST/GetPrescriptionReport_enh';
const GET_PHARMACY_LIST = "Services/Patients.svc/REST/GetPharmcyList"; const GET_PHARMACY_LIST = "Services/Patients.svc/REST/GetPharmcyList";
var selectedPatientType = 1; var selectedPatientType = 1;
//*********change value to decode json from Dropdown ************ //*********change value to decode json from Dropdown ************

@ -824,5 +824,8 @@ const Map<String, Map<String, String>> localizedValues = {
"accepted": {"en": "Accepted", "ar": "وافقت"}, "accepted": {"en": "Accepted", "ar": "وافقت"},
"cancelled": {"en": "Cancelled", "ar": "ألغيت"}, "cancelled": {"en": "Cancelled", "ar": "ألغيت"},
"unReplied": {"en": "UnReplied", "ar": "لم يتم الرد"}, "unReplied": {"en": "UnReplied", "ar": "لم يتم الرد"},
"replied": {"en": "Replied", "ar": " تم الرد"}, "replied": {"en": "Replied", "ar": " تم الرد"},"typeHereToReply": {
"en": "Type here to reply",
"ar": "اكتب هنا للرد"
},
}; };

@ -2,7 +2,10 @@ import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/core/model/hospitals_model.dart'; import 'package:doctor_app_flutter/core/model/hospitals_model.dart';
import 'package:doctor_app_flutter/core/service/base/base_service.dart'; import 'package:doctor_app_flutter/core/service/base/base_service.dart';
import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart'; import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart';
import 'package:doctor_app_flutter/models/doctor/request_add_referred_doctor_remarks.dart';
import 'package:doctor_app_flutter/models/doctor/request_doctor_reply.dart'; import 'package:doctor_app_flutter/models/doctor/request_doctor_reply.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart';
import 'package:doctor_app_flutter/models/patient/request_my_referral_patient_model.dart';
class DoctorReplyService extends BaseService { class DoctorReplyService extends BaseService {
@ -11,7 +14,11 @@ class DoctorReplyService extends BaseService {
RequestDoctorReply _requestDoctorReply = RequestDoctorReply(); RequestDoctorReply _requestDoctorReply = RequestDoctorReply();
List<MyReferralPatientModel> _listMyReferralPatientModel = [];
List<MyReferralPatientModel> get listMyReferralPatientModel => _listMyReferralPatientModel;
Future getDoctorReply() async { Future getDoctorReply() async {
hasError = false;
await baseAppClient.post(GT_MY_PATIENT_QUESTION, await baseAppClient.post(GT_MY_PATIENT_QUESTION,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
_listDoctorWorkingHoursTable.clear(); _listDoctorWorkingHoursTable.clear();
@ -24,4 +31,32 @@ class DoctorReplyService extends BaseService {
super.error = error; super.error = error;
}, body: _requestDoctorReply.toJson(),); }, body: _requestDoctorReply.toJson(),);
} }
Future replay(
String referredDoctorRemarks, MyReferralPatientModel model) async {
RequestMyReferralPatientModel _requestMyReferralPatient =
RequestMyReferralPatientModel();
RequestAddReferredDoctorRemarks _requestAddReferredDoctorRemarks =
RequestAddReferredDoctorRemarks();
_requestAddReferredDoctorRemarks.admissionNo = model.admissionNo;
_requestAddReferredDoctorRemarks.patientID = model.patientID;
_requestAddReferredDoctorRemarks.referredDoctorRemarks =
referredDoctorRemarks;
_requestAddReferredDoctorRemarks.lineItemNo = model.lineItemNo;
_requestAddReferredDoctorRemarks.referringDoctor = model.referringDoctor;
await baseAppClient.post(
ADD_REFERRED_DOCTOR_REMARKS,
body: _requestAddReferredDoctorRemarks.toJson(),
onSuccess: (dynamic body, int statusCode) {
model.referredDoctorRemarks = referredDoctorRemarks;
listMyReferralPatientModel[listMyReferralPatientModel.indexOf(model)] =
model;
},
onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
},
);
}
} }

@ -156,7 +156,7 @@ class PatientReferralService extends LookupService {
hasError = false; hasError = false;
DoctorProfileModel doctorProfile = await getDoctorProfile(); DoctorProfileModel doctorProfile = await getDoctorProfile();
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
body['ClinicID'] = 0; // body['ClinicID'] = 0;
body['DoctorID'] = doctorProfile.doctorID; body['DoctorID'] = doctorProfile.doctorID;
await baseAppClient.post( await baseAppClient.post(

@ -14,7 +14,7 @@ class RadiologyService extends BaseService {
hasError = false; hasError = false;
final Map<String, dynamic> body = new Map<String, dynamic>(); final Map<String, dynamic> body = new Map<String, dynamic>();
body['InvoiceNo'] = invoiceNo; body['InvoiceNo'] = invoiceNo;
body['LineIt emNo'] = lineItem; body['LineItemNo'] = lineItem;
body['ProjectID'] = projectId; body['ProjectID'] = projectId;
await baseAppClient.postPatient(GET_RAD_IMAGE_URL, await baseAppClient.postPatient(GET_RAD_IMAGE_URL,

@ -1,6 +1,7 @@
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
import 'package:doctor_app_flutter/core/service/doctor_reply_service.dart'; import 'package:doctor_app_flutter/core/service/doctor_reply_service.dart';
import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart'; import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart';
import 'package:doctor_app_flutter/models/patient/my_referral/my_referral_patient_model.dart';
import '../../locator.dart'; import '../../locator.dart';
import 'base_view_model.dart'; import 'base_view_model.dart';
@ -19,4 +20,14 @@ class DoctorReplayViewModel extends BaseViewModel {
} else } else
setState(ViewState.Idle); setState(ViewState.Idle);
} }
Future replay(String referredDoctorRemarks, MyReferralPatientModel model) async {
setState(ViewState.BusyLocal);
await _doctorReplyService.replay(referredDoctorRemarks, model);
if (_doctorReplyService.hasError) {
error = _doctorReplyService.error;
setState(ViewState.ErrorLocal);
} else
setState(ViewState.Idle);
}
} }

@ -196,14 +196,14 @@ class _DashboardScreenState extends State<DashboardScreen> {
return Row( return Row(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: <Widget>[ children: <Widget>[
AppText( AppText(item.clinicName,
item.clinicName,
fontSize: SizeConfig fontSize: SizeConfig
.textMultiplier * .textMultiplier *
2.1, 1.6,
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), textAlign:
TextAlign.center),
], ],
); );
}).toList(); }).toList();
@ -1004,7 +1004,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
top: 10, left: 10, right: 0), top: 10, left: 10, right: 0),
child: Icon( child: Icon(
DoctorApp.search, DoctorApp.search,
size: 35, size: 32,
color: Colors.white, color: Colors.white,
)), )),
Container( Container(
@ -1014,6 +1014,7 @@ class _DashboardScreenState extends State<DashboardScreen> {
.searchmedicinepatient, .searchmedicinepatient,
color: Colors.white, color: Colors.white,
textAlign: TextAlign.start, textAlign: TextAlign.start,
fontSize: 14,
)) ))
], ],
), ),
@ -1385,7 +1386,7 @@ class DashboardItem extends StatelessWidget {
height: height != null height: height != null
? height ? height
: MediaQuery.of(context).orientation == Orientation.portrait : MediaQuery.of(context).orientation == Orientation.portrait
? MediaQuery.of(context).size.height * 0.16 ? MediaQuery.of(context).size.height * 0.18
: MediaQuery.of(context).size.height * 0.36, : MediaQuery.of(context).size.height * 0.36,
decoration: BoxDecoration( decoration: BoxDecoration(
color: !hasBorder color: !hasBorder

@ -0,0 +1,330 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart';
import 'package:doctor_app_flutter/models/doctor/list_gt_my_patients_question_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.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/card_with_bg_widget.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart';
class DoctorReplayChat extends StatelessWidget {
final ListGtMyPatientsQuestions reply;
TextEditingController msgController = TextEditingController();
DoctorReplayChat(
{Key key, this.reply,
});
@override
Widget build(BuildContext context) {
return BaseView<DoctorReplayViewModel>(
onModelReady: (model) async {},
builder: (_, model, w) => AppScaffold(
baseViewModel: model,
isShowAppBar: false,
body: Container(
color: Color(0XFFF2F2F2),
child: Stack(
children: [
Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.only(
left: 0, right: 5, bottom: 5, top: 5),
decoration: BoxDecoration(
color: Colors.white,
),
height: 150,
child: Container(
padding: EdgeInsets.only(
left: 10, right: 10, bottom: 10),
margin: EdgeInsets.only(top: 50),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
RichText(
text: TextSpan(
style: TextStyle(
fontSize: 1.6 *
SizeConfig.textMultiplier,
color: Colors.black),
children: <TextSpan>[
new TextSpan(
text: reply.patientName
.toString(),
style: TextStyle(
color: Color(0xFF2B353E),
fontWeight: FontWeight.bold,
fontFamily: 'Poppins',
fontSize: 20)),
],
),
),
InkWell(
onTap: () {
Navigator.pop(context);
},
child: Icon(FontAwesomeIcons.times,
size: 30,
color: Color(0xFF2B353E)))
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
InkWell(
onTap: () {
// TODO: move to doctor profile
},
child: RichText(
text: TextSpan(
style: TextStyle(
fontSize: 1.6 *
SizeConfig.textMultiplier,
color: Colors.black),
children: <TextSpan>[
new TextSpan(
text:
'Tap here to view patient profile'
.toString(),
style: TextStyle(
fontFamily: 'Poppins',
fontSize: 12)),
],
),
),
),
],
),
],
),
),
),
Expanded(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 30,),
Container(
// color: Color(0xFF2B353E),
width: MediaQuery.of(context).size.width * 0.8,
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
color: Color(0xFF2B353E),
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(
color: HexColor('#707070') ,
width: 0.30),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: EdgeInsets.only(top: 5),
width: 60,
height: 60,
child: Image.asset(
1 == 1
? 'assets/images/male_avatar.png'
: 'assets/images/female_avatar.png',
fit: BoxFit.cover,
),
),
Column(
children: [
AppText(
"07 Jan 2021",
fontSize: 2.5 * SizeConfig.textMultiplier,
fontFamily: 'Poppins',
color: Colors.white,
// fontSize: 18
),
AppText(
"07:00 PM",
fontSize: 2.5 * SizeConfig.textMultiplier,
fontFamily: 'Poppins',
color: Colors.white,
// fontSize: 18
),
],
),
],
),
SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
width: MediaQuery.of(context).size.width * 0.7,
child: AppText(
"This procedure should be taken only when the patient is below 99o",
fontSize: 15,
fontFamily: 'Poppins',
color: Colors.white,
// fontSize: 18
),
),
),
],
),
],
),
],
),
),
SizedBox(height: 30,),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container(
// color: Color(0xFF2B353E),
width: MediaQuery.of(context).size.width * 0.8,
padding: EdgeInsets.all(5),
decoration: BoxDecoration(
color: Colors.white,// Color(0xFF2B353E),
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(
color: HexColor('#707070') ,
width: 0.30),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: EdgeInsets.only(top: 5),
width: 60,
height: 60,
child: Image.asset(
1 == 1
? 'assets/images/male_avatar.png'
: 'assets/images/female_avatar.png',
fit: BoxFit.cover,
),
),
Column(
children: [
AppText(
"07 Jan 2021",
fontSize: 2.5 * SizeConfig.textMultiplier,
fontFamily: 'Poppins',
color: Color(0xFF2B353E),
// fontSize: 18
),
AppText(
"07:00 PM",
fontSize: 2.5 * SizeConfig.textMultiplier,
fontFamily: 'Poppins',
color: Color(0xFF2B353E),
// fontSize: 18
),
],
),
],
),
SizedBox(
height: 10,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
width: MediaQuery.of(context).size.width * 0.7,
child: AppText(
"This procedure should be taken only when the patient is below 99o",
fontSize: 15,
fontFamily: 'Poppins',
color: Color(0xFF2B353E),
// fontSize: 18
),
),
),
],
),
],
),
],
),
),
],
),
],
),
),
),
)
],
),
),
],
),
),
bottomSheet: Container(
child:TextFields(
hasLabelText: msgController.text != ''
? true
: false,
showLabelText: false,
hintText: TranslationBase
.of(context)
.typeHereToReply,
fontSize: 13.5,
suffixIcon: FontAwesomeIcons.arrowRight,
suffixIconColor: Colors.green,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 50,
minLines: 3,
controller: msgController,
validator: (value) {
if (value == null || value == "")
return TranslationBase.of(context)
.emptyMessage;
else
return null;
}),
height: MediaQuery.of(context).size.height * 0.1,
),
));
}
}

@ -1,5 +1,6 @@
import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/doctor_replay_view_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/screens/doctor/doctor_repaly_chat.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/doctor/doctor_reply_widget.dart'; import 'package:doctor_app_flutter/widgets/doctor/doctor_reply_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
@ -18,7 +19,9 @@ class DoctorReplyScreen extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BaseView<DoctorReplayViewModel>( return BaseView<DoctorReplayViewModel>(
onModelReady: (model) => model.getDoctorReply(), onModelReady: (model) {
model.getDoctorReply();
},
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
appBarTitle: TranslationBase.of(context).replay2, appBarTitle: TranslationBase.of(context).replay2,
@ -35,7 +38,15 @@ class DoctorReplyScreen extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: children:
model.listDoctorWorkingHoursTable.map((reply) { model.listDoctorWorkingHoursTable.map((reply) {
return DoctorReplyWidget(reply: reply); return InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) =>
DoctorReplayChat(reply: reply)));
},
child: DoctorReplyWidget(reply: reply));
}).toList(), }).toList(),
) )
], ],

@ -48,7 +48,7 @@ class RadiologyDetailsPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Container( Container(
margin: EdgeInsets.all(8),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
@ -62,17 +62,19 @@ class RadiologyDetailsPage extends StatelessWidget {
Padding( Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Texts( child: Texts(
'${finalRadiology.reportData}', '${finalRadiology.reportData.trim()}',
textAlign: TextAlign.start, textAlign: TextAlign.start,
fontSize: 17, fontSize: 17,
color: Colors.grey, color: Colors.grey,
), ),
), ),
SizedBox(height: 25,), SizedBox(height: 25,),
if(model.radImageURL.isNotEmpty)
Center( Center(
child: Container( child: Container(
width: MediaQuery.of(context).size.width * 0.8, width: MediaQuery.of(context).size.width * 0.8,
child: Button( child: Button(
color: Colors.red, color: Colors.red,
onTap: () { onTap: () {
launch(model.radImageURL); launch(model.radImageURL);

@ -73,7 +73,7 @@ class MyReferralDetailScreen extends StatelessWidget {
Expanded( Expanded(
child: AppText( child: AppText(
(Helpers.capitalize(model.patientArrivalList[0].patientDetails.fullName)), (Helpers.capitalize(model.patientArrivalList[0].patientDetails.fullName)),
fontSize: SizeConfig.textMultiplier * 3, fontSize: SizeConfig.textMultiplier * 2.5,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
backGroundcolor: Colors.white, backGroundcolor: Colors.white,
fontFamily: 'Poppins', fontFamily: 'Poppins',
@ -139,7 +139,9 @@ class MyReferralDetailScreen extends StatelessWidget {
referredOn: pendingReferral.referredOn, referredOn: pendingReferral.referredOn,
patientInfo: pendingReferral, patientInfo: pendingReferral,
), ),
SizedBox( Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: SizedBox(
child: ProfileMedicalInfoWidgetSearch( child: ProfileMedicalInfoWidgetSearch(
patient: model.patientArrivalList[0], patient: model.patientArrivalList[0],
patientType: "7", patientType: "7",
@ -147,6 +149,7 @@ class MyReferralDetailScreen extends StatelessWidget {
to: null, to: null,
), ),
), ),
),
], ],
), ),
), ),
@ -206,7 +209,27 @@ class MyReferralDetailScreen extends StatelessWidget {
), ),
], ],
) )
: Container( : Column(
children: [
Container(
padding: EdgeInsets.only(left: 12.0),
child: Row(children: [
IconButton(
icon: Icon(Icons.arrow_back_ios),
color: Colors.black, //Colors.black,
onPressed: () => Navigator.pop(context),
),
Expanded(
child: AppText("" ,
fontSize: SizeConfig.textMultiplier * 2.5,
fontWeight: FontWeight.bold,
backGroundcolor: Colors.white,
fontFamily: 'Poppins',
),
),
]),
),
Container(
child: Center( child: Center(
child: AppText( child: AppText(
TranslationBase.of(context).patientNoDetailErrMsg, TranslationBase.of(context).patientNoDetailErrMsg,
@ -216,6 +239,8 @@ class MyReferralDetailScreen extends StatelessWidget {
), ),
), ),
), ),
],
),
), ),
); );
} }

@ -39,11 +39,11 @@ class _PatientReferralScreen extends State<PatientReferralScreen>
extendBodyBehindAppBar: true, extendBodyBehindAppBar: true,
// backgroundColor: Colors.white, // backgroundColor: Colors.white,
appBar: PreferredSize( appBar: PreferredSize(
preferredSize: Size.fromHeight(65.0), preferredSize: Size.fromHeight(60.0),
child: Center( child: Center(
child: Container( child: Container(
height: 60.0, height: 60.0,
margin: EdgeInsets.only(top: 10.0), // margin: EdgeInsets.only(top: 10.0),
width: MediaQuery.of(context).size.width * 0.92, // 0.9, width: MediaQuery.of(context).size.width * 0.92, // 0.9,
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(

@ -1,4 +1,7 @@
import 'package:date_time_picker/date_time_picker.dart';
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart'; import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -12,6 +15,11 @@ class LineChartCurved extends StatelessWidget {
List<int> xAxixs = List(); List<int> xAxixs = List();
List<double> yAxixs = List(); List<double> yAxixs = List();
// DateFormat format = DateFormat("yyyy-MM-dd");
DateFormat yearFormat = DateFormat("yyyy/MMM");
DateFormat monthFormat = DateFormat("MMM");
bool isDatesSameYear = true;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
getXaxix(); getXaxix();
@ -23,23 +31,31 @@ class LineChartCurved extends StatelessWidget {
borderRadius: BorderRadius.all(Radius.circular(18)), borderRadius: BorderRadius.all(Radius.circular(18)),
// color: Colors.white, // color: Colors.white,
), ),
child: Stack( child: Column(
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
const SizedBox( const SizedBox(
height: 4, height: 4,
), ),
Text( Container(
padding: const EdgeInsets.only(right: 18.0, left: 16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
title, title,
style: TextStyle( fontSize: SizeConfig.textMultiplier * 2.1,
color: Colors.black, fontWeight: FontWeight.bold,
fontSize: 15, backGroundcolor: Colors.black,
letterSpacing: 2), fontFamily: 'Poppins',
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
SizedBox(height: 10,), ],
),
),
SizedBox(
height: 16,
),
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.only(right: 18.0, left: 16.0), padding: const EdgeInsets.only(right: 18.0, left: 16.0),
@ -54,8 +70,6 @@ class LineChartCurved extends StatelessWidget {
), ),
], ],
), ),
],
),
), ),
); );
} }
@ -68,8 +82,9 @@ class LineChartCurved extends StatelessWidget {
} }
} }
} }
getYaxix() { getYaxix() {
int indexess= (timeSeries.length*0.30).toInt(); int indexess = (timeSeries.length * 0.30).toInt();
for (int index = 0; index < timeSeries.length; index++) { for (int index = 0; index < timeSeries.length; index++) {
int mIndex = indexess * index; int mIndex = indexess * index;
if (mIndex < timeSeries.length) { if (mIndex < timeSeries.length) {
@ -83,7 +98,6 @@ class LineChartCurved extends StatelessWidget {
lineTouchData: LineTouchData( lineTouchData: LineTouchData(
touchTooltipData: LineTouchTooltipData( touchTooltipData: LineTouchTooltipData(
tooltipBgColor: Colors.white, tooltipBgColor: Colors.white,
), ),
touchCallback: (LineTouchResponse touchResponse) {}, touchCallback: (LineTouchResponse touchResponse) {},
handleBuiltInTouches: true, handleBuiltInTouches: true,
@ -97,12 +111,23 @@ class LineChartCurved extends StatelessWidget {
color: Colors.black, color: Colors.black,
fontSize: 10, fontSize: 10,
), ),
rotateAngle:-65, rotateAngle: -65,
//rotateAngle:-65, //rotateAngle:-65,
margin: 22, margin: 22,
getTitles: (value) { getTitles: (value) {
if (timeSeries.length < 15) {
if (timeSeries.length > value.toInt()) { if (timeSeries.length > value.toInt()) {
DateTime dateTime = timeSeries[value.toInt()].time;
if (isDatesSameYear) {
return monthFormat.format(dateTime);
} else {
return yearFormat.format(dateTime);
}
} else {
return '';
}
/*if (timeSeries.length < 15) {
if (timeSeries.length > value.toInt()) {
DateTime dateTime = timeSeries[value.toInt()].time;
return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}'; return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
} else } else
return ''; return '';
@ -114,7 +139,7 @@ class LineChartCurved extends StatelessWidget {
if (xAxixs.contains(value.toInt())) { if (xAxixs.contains(value.toInt())) {
return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}'; return '${timeSeries[value.toInt()].time.month}/ ${timeSeries[value.toInt()].time.year}';
} }
} }*/
return ''; return '';
}, },
), ),
@ -163,7 +188,7 @@ class LineChartCurved extends StatelessWidget {
), ),
minX: 0, minX: 0,
maxX: (timeSeries.length - 1).toDouble(), maxX: (timeSeries.length - 1).toDouble(),
maxY: getMaxY()+0.3, maxY: getMaxY() + 0.3,
minY: getMinY(), minY: getMinY(),
lineBarsData: getData(context), lineBarsData: getData(context),
); );
@ -176,7 +201,7 @@ class LineChartCurved extends StatelessWidget {
if (resultValueDouble > max) max = resultValueDouble; if (resultValueDouble > max) max = resultValueDouble;
}); });
return max.roundToDouble() ; return max.roundToDouble();
} }
double getMinY() { double getMinY() {
@ -192,14 +217,22 @@ class LineChartCurved extends StatelessWidget {
List<LineChartBarData> getData(context) { List<LineChartBarData> getData(context) {
List<FlSpot> spots = List(); List<FlSpot> spots = List();
isDatesSameYear = true;
int previousDateYear = 0;
for (int index = 0; index < timeSeries.length; index++) { for (int index = 0; index < timeSeries.length; index++) {
spots.add(FlSpot(index.toDouble(), timeSeries[index].sales)); spots.add(FlSpot(index.toDouble(), timeSeries[index].sales));
if (isDatesSameYear == false ||
(previousDateYear != 0 &&
previousDateYear != timeSeries[index].time.year)) {
isDatesSameYear = false;
}
previousDateYear = timeSeries[index].time.year;
} }
final LineChartBarData lineChartBarData1 = LineChartBarData( final LineChartBarData lineChartBarData1 = LineChartBarData(
spots: spots, spots: spots,
isCurved: true, isCurved: true,
colors: [Theme.of(context).primaryColor], colors: [Colors.red]/*[Theme.of(context).primaryColor]*/,
barWidth: 5, barWidth: 5,
isStrokeCapRound: true, isStrokeCapRound: true,
dotData: FlDotData( dotData: FlDotData(

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart'; import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
@ -26,20 +27,28 @@ class LineChartCurvedBloodPressure extends StatelessWidget {
borderRadius: BorderRadius.all(Radius.circular(18)), borderRadius: BorderRadius.all(Radius.circular(18)),
// color: Colors.white, // color: Colors.white,
), ),
child: Stack( child: Column(
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[ children: <Widget>[
const SizedBox( const SizedBox(
height: 15, height: 4,
), ),
Text( Container(
padding: const EdgeInsets.only(right: 18.0, left: 16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
title, title,
style: TextStyle( fontSize: SizeConfig.textMultiplier * 2.1,
color: Colors.black, fontSize: 15, letterSpacing: 2), fontWeight: FontWeight.bold,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
],
),
),
SizedBox( SizedBox(
height: 10, height: 10,
), ),
@ -91,8 +100,6 @@ class LineChartCurvedBloodPressure extends StatelessWidget {
) )
], ],
), ),
],
),
), ),
); );
} }

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart';
@ -17,7 +18,13 @@ class VitalSignBloodPressureWidget extends StatefulWidget {
final String viewKey2; final String viewKey2;
VitalSignBloodPressureWidget( VitalSignBloodPressureWidget(
{Key key, this.vitalList, this.title1, this.title2, this.viewKey1, this.title3, this.viewKey2}); {Key key,
this.vitalList,
this.title1,
this.title2,
this.viewKey1,
this.title3,
this.viewKey2});
@override @override
_VitalSignDetailsWidgetState createState() => _VitalSignDetailsWidgetState(); _VitalSignDetailsWidgetState createState() => _VitalSignDetailsWidgetState();
@ -28,62 +35,108 @@ class _VitalSignDetailsWidgetState extends State<VitalSignBloodPressureWidget> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
return Container( return Container(
decoration: BoxDecoration( /*decoration: BoxDecoration(
color: Colors.transparent, color: Colors.transparent,
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)), topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)),
border: Border.all(color: Colors.grey, width: 1), border: Border.all(color: Colors.grey, width: 1),
), ),*/
margin: EdgeInsets.all(20), margin: EdgeInsets.all(0),
child: Container( child: Container(
color: Colors.transparent, color: Colors.transparent,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Table( Row(
border: TableBorder.symmetric( children: [
inside: BorderSide(width: 2.0, color: Colors.grey[300]), Expanded(
child: Container(
child: Container(
padding: EdgeInsets.all(8),
/*decoration: BoxDecoration(
color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topLeft:projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0),
topRight: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0)
), ),
children: fullData(projectViewModel), ),*/
child: AppText(
TranslationBase.of(context).date,
fontSize: SizeConfig.textMultiplier * 1.5,
fontWeight: FontWeight.bold,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
), ),
], // height: 60,
), ),
), ),
); ),
} Expanded(
List<TableRow> fullData(ProjectViewModel projectViewModel) {
List<TableRow> tableRow = [];
tableRow.add(TableRow(children: [
Container(
child: Container( child: Container(
decoration: BoxDecoration( padding: EdgeInsets.all(8),
child: Container(
/*decoration: BoxDecoration(
color: Theme.of(context).primaryColor, color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft:projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), topRight: projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0),
topRight: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) topLeft: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0)
),
), ),
child: Center( ),*/
child: AppText( child: AppText(
TranslationBase.of(context).date, widget.title2,
color: Colors.white, fontSize: SizeConfig.textMultiplier * 1.5,
fontWeight: FontWeight.bold,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
), ),
// height: 60
), ),
height: 60,
), ),
), ),
Container( Expanded(
child: Container( child: Container(
decoration: BoxDecoration( padding: EdgeInsets.all(8),
child: Container(
/*decoration: BoxDecoration(
color: Theme.of(context).primaryColor, color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only(
topRight: projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0),
topLeft: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0)
), ),
child: Center( ),*/
child: AppText(widget.title2, color: Colors.white), child: AppText(
widget.title3,
fontSize: SizeConfig.textMultiplier * 1.5,
fontWeight: FontWeight.bold,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
),
// height: 60
),
),
),
],
),
const Divider(
height: 1,
thickness: 1,
color: Colors.black,
),
Table(
border: TableBorder(
horizontalInside: BorderSide(width: 1.0, color: Colors.grey[300]),
),
children: fullData(projectViewModel),
),
],
), ),
height: 60),
), ),
);
}
List<TableRow> fullData(ProjectViewModel projectViewModel) {
List<TableRow> tableRow = [];
/* tableRow.add(TableRow(children: [
Container( Container(
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
@ -98,7 +151,7 @@ class _VitalSignDetailsWidgetState extends State<VitalSignBloodPressureWidget> {
), ),
height: 60), height: 60),
), ),
])); ]));*/
widget.vitalList.forEach((vital) { widget.vitalList.forEach((vital) {
var data = vital.toJson()[widget.viewKey1]; var data = vital.toJson()[widget.viewKey1];
DateTime elementDate = DateTime elementDate =
@ -109,11 +162,13 @@ class _VitalSignDetailsWidgetState extends State<VitalSignBloodPressureWidget> {
child: Container( child: Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
color: Colors.white, color: Colors.white,
child: Center(
child: AppText( child: AppText(
'${projectViewModel.isArabic ? DateUtils.getWeekDayArabic(elementDate.weekday) : DateUtils.getWeekDay(elementDate.weekday)}, ${elementDate.day} ${projectViewModel.isArabic ? DateUtils.getMonthArabic(elementDate.month) : DateUtils.getMonth(elementDate.month)}, ${elementDate.year} ', '${projectViewModel.isArabic ? DateUtils.getWeekDayArabic(elementDate.weekday) : DateUtils.getWeekDay(elementDate.weekday)}, ${elementDate.day} ${projectViewModel.isArabic ? DateUtils.getMonthArabic(elementDate.month) : DateUtils.getMonth(elementDate.month)}, ${elementDate.year} ',
textAlign: TextAlign.center, // textAlign: TextAlign.center,
), fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.w600,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
), ),
), ),
), ),
@ -121,11 +176,13 @@ class _VitalSignDetailsWidgetState extends State<VitalSignBloodPressureWidget> {
child: Container( child: Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
color: Colors.white, color: Colors.white,
child: Center(
child: AppText( child: AppText(
'${vital.toJson()[widget.viewKey1]}', '${vital.toJson()[widget.viewKey1]}',
textAlign: TextAlign.center, // textAlign: TextAlign.center,
), fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.w600,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
), ),
), ),
), ),
@ -133,11 +190,13 @@ class _VitalSignDetailsWidgetState extends State<VitalSignBloodPressureWidget> {
child: Container( child: Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(10),
color: Colors.white, color: Colors.white,
child: Center(
child: AppText( child: AppText(
'${vital.toJson()[widget.viewKey2]}', '${vital.toJson()[widget.viewKey2]}',
textAlign: TextAlign.center, // textAlign: TextAlign.center,
), fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.w600,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
), ),
), ),
), ),

@ -72,7 +72,7 @@ class VitalSignDetailsScreen extends StatelessWidget {
), ),
), ),
Container( Container(
height: MediaQuery.of(context).size.height * 0.21, height: MediaQuery.of(context).size.height * 0.23,
width: double.infinity, width: double.infinity,
padding: EdgeInsets.all(12.0), padding: EdgeInsets.all(12.0),
margin: EdgeInsets.symmetric(horizontal: 16.0), margin: EdgeInsets.symmetric(horizontal: 16.0),
@ -249,21 +249,24 @@ class VitalSignDetailsScreen extends StatelessWidget {
const SizedBox( const SizedBox(
height: 4, height: 4,
), ),
AppText( FittedBox(
fit: BoxFit.fitWidth,
child: AppText(
"${TranslationBase.of(context).bmiObeseExtreme}", "${TranslationBase.of(context).bmiObeseExtreme}",
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.15, fontSize: SizeConfig.textMultiplier * 1.15,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
color: mode.getBMIStatus() == 4 color: mode.getBMIStatus() == 5
? Color(0XFFD02127) ? Color(0XFFD02127)
: null, : null,
), ),
),
AppText( AppText(
"(35<)", "(35<)",
fontFamily: 'Poppins', fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.15, fontSize: SizeConfig.textMultiplier * 1.15,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
color: mode.getBMIStatus() == 4 color: mode.getBMIStatus() == 5
? Color(0XFFD02127) ? Color(0XFFD02127)
: null, : null,
), ),
@ -277,7 +280,7 @@ class VitalSignDetailsScreen extends StatelessWidget {
Expanded( Expanded(
child: Container( child: Container(
margin: EdgeInsets.symmetric(horizontal: 8.0), margin: EdgeInsets.symmetric(horizontal: 8.0),
child : GridView.count( child: GridView.count(
shrinkWrap: true, shrinkWrap: true,
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
crossAxisSpacing: 4, crossAxisSpacing: 4,
@ -293,10 +296,12 @@ class VitalSignDetailsScreen extends StatelessWidget {
page: VitalSignItemDetailsScreen( page: VitalSignItemDetailsScreen(
pageKey: vitalSignDetails.Height, pageKey: vitalSignDetails.Height,
pageTitle: pageTitle:
TranslationBase.of(context) TranslationBase.of(context).height,
.height,
vitalList: vitalList:
mode.patientVitalSignsHistory, mode.patientVitalSignsHistory,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
), ),
), ),
) )
@ -304,8 +309,7 @@ class VitalSignDetailsScreen extends StatelessWidget {
child: Container( child: Container(
child: VitalSignItem( child: VitalSignItem(
des: TranslationBase.of(context).height, des: TranslationBase.of(context).height,
imagePath: imagePath: "${assetBasePath}height.png",
"${assetBasePath}height.png",
lastVal: mode.heightCm, lastVal: mode.heightCm,
unit: TranslationBase.of(context).cm, unit: TranslationBase.of(context).cm,
), ),
@ -319,10 +323,12 @@ class VitalSignDetailsScreen extends StatelessWidget {
page: VitalSignItemDetailsScreen( page: VitalSignItemDetailsScreen(
pageKey: vitalSignDetails.Weight, pageKey: vitalSignDetails.Weight,
pageTitle: pageTitle:
TranslationBase.of(context) TranslationBase.of(context).weight,
.weight,
vitalList: vitalList:
mode.patientVitalSignsHistory, mode.patientVitalSignsHistory,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
), ),
), ),
) )
@ -340,23 +346,22 @@ class VitalSignDetailsScreen extends StatelessWidget {
context, context,
FadePage( FadePage(
page: VitalSignItemDetailsScreen( page: VitalSignItemDetailsScreen(
pageKey: pageKey: vitalSignDetails.Temperature,
vitalSignDetails.Temperature, pageTitle: TranslationBase.of(context)
pageTitle:
TranslationBase.of(context)
.temperature, .temperature,
vitalList: vitalList:
mode.patientVitalSignsHistory, mode.patientVitalSignsHistory,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
), ),
), ),
) )
: null, : null,
child: Container( child: Container(
child: VitalSignItem( child: VitalSignItem(
des: des: TranslationBase.of(context).temperature,
TranslationBase.of(context).temperature, imagePath: "${assetBasePath}temperature.png",
imagePath:
"${assetBasePath}temperature.png",
lastVal: mode.temperatureCelcius, lastVal: mode.temperatureCelcius,
unit: TranslationBase.of(context).tempC, unit: TranslationBase.of(context).tempC,
), ),
@ -370,18 +375,19 @@ class VitalSignDetailsScreen extends StatelessWidget {
page: VitalSignItemDetailsScreen( page: VitalSignItemDetailsScreen(
pageKey: vitalSignDetails.heart, pageKey: vitalSignDetails.heart,
pageTitle: pageTitle:
TranslationBase.of(context) TranslationBase.of(context).heart,
.heart,
vitalList: vitalList:
mode.patientVitalSignsHistory, mode.patientVitalSignsHistory,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
), ),
), ),
) )
: null, : null,
child: VitalSignItem( child: VitalSignItem(
des: TranslationBase.of(context).heart, des: TranslationBase.of(context).heart,
imagePath: imagePath: "${assetBasePath}heart_rate.png",
"${assetBasePath}heart_rate.png",
lastVal: mode.hartRat, lastVal: mode.hartRat,
unit: TranslationBase.of(context).bpm, unit: TranslationBase.of(context).bpm,
), ),
@ -392,25 +398,24 @@ class VitalSignDetailsScreen extends StatelessWidget {
context, context,
FadePage( FadePage(
page: VitalSignItemDetailsScreen( page: VitalSignItemDetailsScreen(
pageKey: pageKey: vitalSignDetails.Respiration,
vitalSignDetails.Respiration, pageTitle: TranslationBase.of(context)
pageTitle:
TranslationBase.of(context)
.respirationRate, .respirationRate,
vitalList: vitalList:
mode.patientVitalSignsHistory, mode.patientVitalSignsHistory,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
), ),
), ),
) )
: null, : null,
child: VitalSignItem( child: VitalSignItem(
des: TranslationBase.of(context) des: TranslationBase.of(context).respirationRate,
.respirationRate, imagePath: "${assetBasePath}respiration_rate.png",
imagePath:
"${assetBasePath}respiration_rate.png",
lastVal: mode.respirationBeatPerMinute, lastVal: mode.respirationBeatPerMinute,
unit: TranslationBase.of(context) unit:
.respirationSigns, TranslationBase.of(context).respirationSigns,
), ),
), ),
InkWell( InkWell(
@ -419,22 +424,21 @@ class VitalSignDetailsScreen extends StatelessWidget {
context, context,
FadePage( FadePage(
page: VitalSignItemDetailsScreen( page: VitalSignItemDetailsScreen(
pageKey: pageKey: vitalSignDetails.BloodPressure,
vitalSignDetails.BloodPressure, pageTitle: TranslationBase.of(context)
pageTitle:
TranslationBase.of(context)
.bloodPressure, .bloodPressure,
vitalList: vitalList:
mode.patientVitalSignsHistory, mode.patientVitalSignsHistory,
patient: patient,
patientType: patientType,
arrivalType: arrivalType,
), ),
), ),
) )
: null, : null,
child: VitalSignItem( child: VitalSignItem(
des: des: TranslationBase.of(context).bloodPressure,
TranslationBase.of(context).bloodPressure, imagePath: "${assetBasePath}blood_pressure.png",
imagePath:
"${assetBasePath}blood_pressure.png",
lastVal: mode.bloodPressure, lastVal: mode.bloodPressure,
unit: TranslationBase.of(context).sysDias, unit: TranslationBase.of(context).sysDias,
), ),

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart';
@ -27,66 +28,88 @@ class _VitalSignDetailsWidgetState extends State<VitalSignDetailsWidget> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
return Container( return Container(
decoration: BoxDecoration( /*decoration: BoxDecoration(
color: Colors.transparent, color: Colors.transparent,
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)), topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)),
border: Border.all(color: Colors.grey, width: 1), border: Border.all(color: Colors.grey, width: 1),
), ),*/
margin: EdgeInsets.all(20), margin: EdgeInsets.all(0),
child: Container( child: Container(
color: Colors.transparent, color: Colors.transparent,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Table( Row(
border: TableBorder.symmetric( children: [
inside: BorderSide(width: 2.0, color: Colors.grey[300]), Expanded(
), child: Container(
children: fullData(projectViewModel),
),
],
),
),
);
}
List<TableRow> fullData(ProjectViewModel projectViewModel) {
List<TableRow> tableRow = [];
tableRow.add(TableRow(children: [
Container(
child: Container( child: Container(
decoration: BoxDecoration( padding: EdgeInsets.all(8),
/*decoration: BoxDecoration(
color: Theme.of(context).primaryColor, color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft:projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), topLeft:projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0),
topRight: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) topRight: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0)
), ),
), ),*/
child: Center(
child: AppText( child: AppText(
TranslationBase.of(context).date, TranslationBase.of(context).date,
color: Colors.white, fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.bold,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
), ),
// height: 60,
), ),
height: 60,
), ),
), ),
Container( Expanded(
child: Container( child: Container(
decoration: BoxDecoration( padding: EdgeInsets.all(8),
child: Container(
/*decoration: BoxDecoration(
color: Theme.of(context).primaryColor, color: Theme.of(context).primaryColor,
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topRight: projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0), topRight: projectViewModel.isArabic? Radius.circular(0.0):Radius.circular(10.0),
topLeft: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0) topLeft: projectViewModel.isArabic? Radius.circular(10.0):Radius.circular(0.0)
), ),
),*/
child: AppText(
widget.title2,
fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.bold,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
),
// height: 60
), ),
child: Center(
child: AppText(widget.title2, color: Colors.white),
), ),
height: 60),
) )
])); ],
),
const Divider(
height: 1,
thickness: 1,
color: Colors.black,
),
Table(
border: TableBorder(
horizontalInside: BorderSide(width: 1.0, color: Colors.grey[300]),
),
children: fullData(projectViewModel),
),
],
),
),
);
}
List<TableRow> fullData(ProjectViewModel projectViewModel) {
List<TableRow> tableRow = [];
/* tableRow.add(TableRow(children: [
]));*/
widget.vitalList.forEach((vital) { widget.vitalList.forEach((vital) {
var data = vital.toJson()[widget.viewKey]; var data = vital.toJson()[widget.viewKey];
DateTime elementDate = DateTime elementDate =
@ -95,25 +118,29 @@ class _VitalSignDetailsWidgetState extends State<VitalSignDetailsWidget> {
tableRow.add(TableRow(children: [ tableRow.add(TableRow(children: [
Container( Container(
child: Container( child: Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(8),
color: Colors.white, color: Colors.white,
child: Center(
child: AppText( child: AppText(
'${projectViewModel.isArabic ? DateUtils.getWeekDayArabic(elementDate.weekday) : DateUtils.getWeekDay(elementDate.weekday)}, ${elementDate.day} ${projectViewModel.isArabic ? DateUtils.getMonthArabic(elementDate.month) : DateUtils.getMonth(elementDate.month)}, ${elementDate.year} ', '${projectViewModel.isArabic ? DateUtils.getWeekDayArabic(elementDate.weekday) : DateUtils.getWeekDay(elementDate.weekday)}, ${elementDate.day} ${projectViewModel.isArabic ? DateUtils.getMonthArabic(elementDate.month) : DateUtils.getMonth(elementDate.month)}, ${elementDate.year} ',
textAlign: TextAlign.center, // textAlign: TextAlign.center,
), fontSize: SizeConfig.textMultiplier * 1.8,
fontWeight: FontWeight.w600,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
), ),
), ),
), ),
Container( Container(
child: Container( child: Container(
padding: EdgeInsets.all(10), padding: EdgeInsets.all(8),
color: Colors.white, color: Colors.white,
child: Center(
child: AppText( child: AppText(
'${vital.toJson()[widget.viewKey]}', '${vital.toJson()[widget.viewKey]}',
textAlign: TextAlign.center, // textAlign: TextAlign.center,
), fontSize: SizeConfig.textMultiplier * 1.8,
fontWeight: FontWeight.w600,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
), ),
), ),
), ),

@ -1,10 +1,15 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/lookups/patient_lookup.dart'; import 'package:doctor_app_flutter/lookups/patient_lookup.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart';
import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sing_chart_and_detials.dart';
import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sing_chart_blood_pressure.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_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:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -12,8 +17,17 @@ class VitalSignItemDetailsScreen extends StatelessWidget {
final vitalSignDetails pageKey; final vitalSignDetails pageKey;
final String pageTitle; final String pageTitle;
List<Map> VSchart; List<Map> VSchart;
PatiantInformtion patient;
VitalSignItemDetailsScreen({this.vitalList, this.pageKey, this.pageTitle}); String patientType;
String arrivalType;
VitalSignItemDetailsScreen(
{this.vitalList,
this.pageKey,
this.pageTitle,
this.patient,
this.patientType,
this.arrivalType});
final List<VitalSignHistory> vitalList; final List<VitalSignHistory> vitalList;
@ -31,7 +45,6 @@ class VitalSignItemDetailsScreen extends StatelessWidget {
'title2Ar': 'الكتلة', 'title2Ar': 'الكتلة',
'viewKey': 'BodyMassIndex', 'viewKey': 'BodyMassIndex',
}, },
]; ];
break; break;
@ -87,7 +100,6 @@ class VitalSignItemDetailsScreen extends StatelessWidget {
'title3Ar': 'الإنبساط', 'title3Ar': 'الإنبساط',
'viewKey': 'BloodPressure', 'viewKey': 'BloodPressure',
}, },
]; ];
break; break;
@ -161,36 +173,80 @@ class VitalSignItemDetailsScreen extends StatelessWidget {
} }
return AppScaffold( return AppScaffold(
appBarTitle: pageTitle, appBarTitle: pageTitle,
backgroundColor: Color.fromRGBO(248, 248, 248, 1),
isShowAppBar: true, isShowAppBar: true,
body: ListView( appBar: PatientProfileHeaderNewDesignAppBar(
patient, patientType, arrivalType),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
"${patient.firstName ?? patient.patientDetails.firstName}'s",
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 1.6,
fontWeight: FontWeight.w600,
),
AppText(
TranslationBase.of(context).vitalSign,
fontFamily: 'Poppins',
fontSize: SizeConfig.textMultiplier * 3,
fontWeight: FontWeight.bold,
)
],
),
),
Container(
child: ListView(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
children: VSchart.map((chartInfo) { children: VSchart.map((chartInfo) {
var vitalListTemp = vitalList.where( var vitalListTemp = vitalList.where(
(element) => element.toJson()[chartInfo['viewKey']] != null, (element) => element.toJson()[chartInfo['viewKey']] != null,
); );
if(vitalListTemp.length != 0 && chartInfo['viewKey']=='BloodPressure'){ if (vitalListTemp.length != 0 &&
chartInfo['viewKey'] == 'BloodPressure') {
return VitalSingChartBloodPressure( return VitalSingChartBloodPressure(
vitalList: vitalList, vitalList: vitalList,
name:projectViewModel.isArabic? chartInfo['nameAr']:chartInfo['name'], name: projectViewModel.isArabic
? chartInfo['nameAr']
: chartInfo['name'],
title1: chartInfo['title1'], title1: chartInfo['title1'],
title2:projectViewModel.isArabic?chartInfo['title2Ar']: chartInfo['title2'], title2: projectViewModel.isArabic
title3:projectViewModel.isArabic?chartInfo['title3Ar']: chartInfo['title3'], ? chartInfo['title2Ar']
: chartInfo['title2'],
title3: projectViewModel.isArabic
? chartInfo['title3Ar']
: chartInfo['title3'],
viewKey1: 'BloodPressureHigher', viewKey1: 'BloodPressureHigher',
viewKey2: 'BloodPressureLower', viewKey2: 'BloodPressureLower',
); );
} }
return vitalListTemp.length != 0 return vitalListTemp.length != 0
? VitalSingChartAndDetials( ? VitalSingChartAndDetials(
vitalList: vitalList, vitalList: vitalList,
name:projectViewModel.isArabic? chartInfo['nameAr']:chartInfo['name'], name: projectViewModel.isArabic
? chartInfo['nameAr']
: chartInfo['name'],
title1: chartInfo['title1'], title1: chartInfo['title1'],
title2:projectViewModel.isArabic?chartInfo['title2Ar']: chartInfo['title2'], title2: projectViewModel.isArabic
? chartInfo['title2Ar']
: chartInfo['title2'],
viewKey: chartInfo['viewKey']) viewKey: chartInfo['viewKey'])
: Container(); : Container();
}).toList(), }).toList(),
), ),
),
],
),
),
); );
} }
} }

@ -1,3 +1,4 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart';
import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_details_wideget.dart';
@ -32,9 +33,52 @@ class VitalSingChartAndDetials extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
generateData(); generateData();
return timeSeriesData.length != 0 ? Column( return timeSeriesData.length != 0
? Padding(
padding: const EdgeInsets.all(10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppExpandableNotifier( Container(
margin: EdgeInsets.symmetric(horizontal: 8),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12)
),
child: LineChartCurved(
title: name,
timeSeries: timeSeriesData,
indexes: timeSeriesData.length ~/ 5.5,
),
),
Container(
margin: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
padding: EdgeInsets.only(top: 16, right: 18.0, left: 16.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12)
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
"Graph Details",
fontSize: SizeConfig.textMultiplier * 2.1,
fontWeight: FontWeight.bold,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
),
SizedBox(height: 8,),
VitalSignDetailsWidget(
vitalList: vitalList,
title1: title1,
title2: title2,
viewKey: viewKey,
),
],
),
),
/*AppExpandableNotifier(
// isExpand: true, // isExpand: true,
headerWid: LineChartCurved(title: name,timeSeries:timeSeriesData,indexes: timeSeriesData.length~/5.5,), headerWid: LineChartCurved(title: name,timeSeries:timeSeriesData,indexes: timeSeriesData.length~/5.5,),
bodyWid: VitalSignDetailsWidget( bodyWid: VitalSignDetailsWidget(
@ -43,9 +87,11 @@ class VitalSingChartAndDetials extends StatelessWidget {
title2: title2, title2: title2,
viewKey: viewKey, viewKey: viewKey,
), ),
), ),*/
], ],
) : Container( ),
)
: Container(
width: double.infinity, width: double.infinity,
height: MediaQuery.of(context).size.height, height: MediaQuery.of(context).size.height,
child: Center( child: Center(
@ -58,11 +104,14 @@ class VitalSingChartAndDetials extends StatelessWidget {
if (vitalList.length > 0) { if (vitalList.length > 0) {
vitalList.reversed.toList().forEach( vitalList.reversed.toList().forEach(
(element) { (element) {
DateTime elementDate = DateUtils.getDateTimeFromServerFormat(element.createdOn); DateTime elementDate =
if(element.toJson()[viewKey]!=null && element.toJson()[viewKey]?.toInt()!=0) DateUtils.getDateTimeFromServerFormat(element.createdOn);
if (element.toJson()[viewKey] != null &&
element.toJson()[viewKey]?.toInt() != 0)
timeSeriesData.add( timeSeriesData.add(
TimeSeriesSales2( TimeSeriesSales2(
new DateTime(elementDate.year, elementDate.month, elementDate.day), new DateTime(
elementDate.year, elementDate.month, elementDate.day),
element.toJson()[viewKey].toDouble(), element.toJson()[viewKey].toDouble(),
), ),
); );

@ -1,9 +1,11 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-data.dart';
import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart'; import 'package:doctor_app_flutter/models/patient/vital_sign/patient-vital-sign-history.dart';
import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart'; import 'package:doctor_app_flutter/screens/patients/profile/vital_sign/vital_sign_details_blood_pressurewideget.dart';
import 'package:doctor_app_flutter/util/date-utils.dart'; import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart'; import 'package:doctor_app_flutter/widgets/charts/app_time_series_chart.dart';
import 'package:doctor_app_flutter/widgets/shared/app_expandable_notifier.dart'; import 'package:doctor_app_flutter/widgets/shared/app_expandable_notifier.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts; import 'package:charts_flutter/flutter.dart' as charts;
@ -36,9 +38,54 @@ class VitalSingChartBloodPressure extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
generateData(); generateData();
return Column( return Padding(
padding: const EdgeInsets.all(10.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
AppExpandableNotifier( Container(
margin: EdgeInsets.symmetric(horizontal: 8),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12)
),
child: LineChartCurvedBloodPressure(
title: name,
timeSeries1: timeSeriesData1,
timeSeries2: timeSeriesData2,
indexes: timeSeriesData1.length ~/ 5.5,
),
),
Container(
margin: EdgeInsets.symmetric(horizontal: 8, vertical: 16),
padding: EdgeInsets.only(top: 16, right: 18.0, left: 16.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12)
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
AppText(
"Graph Details",
fontSize: SizeConfig.textMultiplier * 2.3,
fontWeight: FontWeight.bold,
backGroundcolor: Colors.black,
fontFamily: 'Poppins',
),
SizedBox(height: 8,),
VitalSignBloodPressureWidget(
vitalList: vitalList,
title1: title1,
title2: title2,
title3: title3,
viewKey1: viewKey1,
viewKey2: viewKey2,
),
],
),
),
/*AppExpandableNotifier(
// isExpand: true, // isExpand: true,
headerWid: LineChartCurvedBloodPressure( headerWid: LineChartCurvedBloodPressure(
title: name, title: name,
@ -54,8 +101,9 @@ class VitalSingChartBloodPressure extends StatelessWidget {
viewKey1: viewKey1, viewKey1: viewKey1,
viewKey2: viewKey2, viewKey2: viewKey2,
), ),
), ),*/
], ],
),
); );
} }

@ -25,8 +25,6 @@ class ProcedureCard extends StatelessWidget {
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
color: Colors.white, color: Colors.white,
), ),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Container( child: Container(
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
@ -136,7 +134,6 @@ class ProcedureCard extends StatelessWidget {
], ],
), ),
), ),
),
); );
} }
} }

@ -7,6 +7,7 @@ import 'package:doctor_app_flutter/screens/procedures/update-procedure.dart';
import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/helpers.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design-app-bar.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/patient-profile-header-new-design.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart'; import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
@ -27,8 +28,8 @@ class ProcedureScreen extends StatelessWidget {
onModelReady: (model) => model.getProcedure(mrn: patient.patientId), onModelReady: (model) => model.getProcedure(mrn: patient.patientId),
builder: (BuildContext context, ProcedureViewModel model, Widget child) => builder: (BuildContext context, ProcedureViewModel model, Widget child) =>
AppScaffold( AppScaffold(
isShowAppBar: false, isShowAppBar: true,
appBarTitle: TranslationBase.of(context).orderProcedure, appBar: PatientProfileHeaderNewDesignAppBar(patient, arrivalType ?? '0', patientType),
body: NetworkBaseView( body: NetworkBaseView(
baseViewModel: model, baseViewModel: model,
child: SingleChildScrollView( child: SingleChildScrollView(
@ -37,8 +38,6 @@ class ProcedureScreen extends StatelessWidget {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
PatientProfileHeaderNewDesign(
patient, arrivalType ?? '0', patientType),
SizedBox( SizedBox(
height: 12, height: 12,
), ),

@ -230,76 +230,77 @@ class AddSickLeavScreen extends StatelessWidget {
)); ));
}).toList(), }).toList(),
) )
: new Builder(builder: (context) { : SizedBox()
return Column( // : new Builder(builder: (context) {
crossAxisAlignment: CrossAxisAlignment.start, // return Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
Padding( // children: [
padding: EdgeInsets.all(10), // Padding(
child: Column( // padding: EdgeInsets.all(10),
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
AppText( // children: [
TranslationBase.of(context).patient, // AppText(
fontWeight: FontWeight.bold, // TranslationBase.of(context).patient,
), // fontWeight: FontWeight.bold,
AppText( // ),
TranslationBase.of(context).sickLeave, // AppText(
fontSize: 24, // TranslationBase.of(context).sickLeave,
fontWeight: FontWeight.bold, // fontSize: 24,
), // fontWeight: FontWeight.bold,
], // ),
)), // ],
Container( // )),
width: SizeConfig.screenWidth, // Container(
margin: EdgeInsets.only( // width: SizeConfig.screenWidth,
left: 20, right: 20, top: 20, bottom: 20), // margin: EdgeInsets.only(
padding: EdgeInsets.all(20), // left: 20, right: 20, top: 20, bottom: 20),
decoration: BoxDecoration( // padding: EdgeInsets.all(20),
borderRadius: BorderRadius.circular(10), // decoration: BoxDecoration(
color: HexColor('#EAEAEA')), // borderRadius: BorderRadius.circular(10),
child: Column( // color: HexColor('#EAEAEA')),
mainAxisAlignment: MainAxisAlignment.start, // child: Column(
children: [ // mainAxisAlignment: MainAxisAlignment.start,
Container( // children: [
child: Container( // Container(
decoration: BoxDecoration( // child: Container(
color: Colors.grey, // decoration: BoxDecoration(
borderRadius: // color: Colors.grey,
BorderRadius.circular(10)), // borderRadius:
padding: EdgeInsets.all(3), // BorderRadius.circular(10)),
child: IconButton( // padding: EdgeInsets.all(3),
icon: Icon( // child: IconButton(
Icons.add, // icon: Icon(
size: 35, // Icons.add,
color: Colors.white, // size: 35,
), // color: Colors.white,
onPressed: () { // ),
openSickLeave( // onPressed: () {
context, // openSickLeave(
false, // context,
); // false,
}), // );
)), // }),
Padding( // )),
child: AppText( // Padding(
TranslationBase.of(context) // child: AppText(
.noSickLeaveApplied, // TranslationBase.of(context)
fontWeight: FontWeight.bold, // .noSickLeaveApplied,
fontFamily: 'Poppins', // fontWeight: FontWeight.bold,
fontSize: 16, // fontFamily: 'Poppins',
textAlign: TextAlign.center, // fontSize: 16,
color: HexColor('#7E7E7E')), // textAlign: TextAlign.center,
padding: EdgeInsets.all(10), // color: HexColor('#7E7E7E')),
), // padding: EdgeInsets.all(10),
], // ),
)), // ],
SizedBox( // )),
height: SizeConfig.screenHeight * .6, // SizedBox(
) // height: SizeConfig.screenHeight * .6,
], // )
); // ],
}), // );
// }),
])))); ]))));
} }

@ -30,6 +30,7 @@ class ShowSickLeaveScreen extends StatelessWidget {
model.getSickLeave(patient.patientMRN ?? patient.patientId), model.getSickLeave(patient.patientMRN ?? patient.patientId),
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
baseViewModel: model, baseViewModel: model,
isShowAppBar: false,
appBarTitle: TranslationBase.of(context).sickleave, appBarTitle: TranslationBase.of(context).sickleave,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(

@ -1200,10 +1200,11 @@ class TranslationBase {
String get updateReschedule => String get updateReschedule =>
localizedValues['update-reschedule'][locale.languageCode]; localizedValues['update-reschedule'][locale.languageCode];
String get sickLeave => localizedValues['sick_leave'][locale.languageCode]; String get sickLeave => localizedValues['sick_leave'][locale.languageCode];
String get accepted => localizedValues['accepetd'][locale.languageCode]; String get accepted => localizedValues['accepted'][locale.languageCode];
String get cancelled => localizedValues['cancelled'][locale.languageCode]; String get cancelled => localizedValues['cancelled'][locale.languageCode];
String get unReplied => localizedValues['unReplied'][locale.languageCode]; String get unReplied => localizedValues['unReplied'][locale.languageCode];
String get replied => localizedValues['replied'][locale.languageCode]; String get replied => localizedValues['replied'][locale.languageCode];
String get typeHereToReply => localizedValues['typeHereToReply'][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -78,10 +78,18 @@ class MyScheduleWidget extends StatelessWidget {
SizedBox( SizedBox(
height: 5, height: 5,
), ),
AppText( Container(
width: MediaQuery.of(context).size.width*0.55,
child: Expanded(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: AppText(
work.from + ' - ' + work.to, work.from + ' - ' + work.to,
fontSize: 2.0 * SizeConfig.textMultiplier, fontSize: 15,
fontWeight: FontWeight.w300, fontWeight: FontWeight.w300,
),
),
),
) )
], ],
), ),

@ -44,7 +44,11 @@ class PatientProfileHeaderNewDesignAppBar extends StatelessWidget with Preferred
onPressed: () => Navigator.pop(context), onPressed: () => Navigator.pop(context),
), ),
AppText( AppText(
patient.firstName!=null? (Helpers.capitalize(patient.firstName) + " " + Helpers.capitalize(patient.lastName)):'', patient.firstName != null ?
(Helpers.capitalize(patient.firstName) +
" " +
Helpers.capitalize(
patient.lastName)) : Helpers.capitalize(patient.patientDetails.fullName),
fontSize: SizeConfig.textMultiplier * 2.5, fontSize: SizeConfig.textMultiplier * 2.5,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
backGroundcolor: Colors.white, backGroundcolor: Colors.white,

@ -369,7 +369,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
'${TranslationBase.of(context).dr}$doctorName', '${TranslationBase.of(context).dr}$doctorName',
color: Colors.black, color: Colors.black,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 14, fontSize: 12,
), ),
if (orderNo != null && !isPrescriptions) if (orderNo != null && !isPrescriptions)
Row( Row(
@ -377,10 +377,10 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
Texts( Texts(
'Order No: ', 'Order No: ',
color: Colors.grey[800], color: Colors.grey[800],
fontSize: 14 fontSize: 12
), ),
Texts( Texts(
orderNo ?? '',fontSize: 14 orderNo ?? '',fontSize: 12
) )
], ],
), ),
@ -390,11 +390,11 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
Texts( Texts(
'Invoice: ', 'Invoice: ',
color: Colors.grey[800], color: Colors.grey[800],
fontSize: 14 fontSize: 12
), ),
Texts( Texts(
invoiceNO, invoiceNO,
fontSize: 14 fontSize: 12
) )
], ],
), ),
@ -404,11 +404,11 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
Texts( Texts(
'Branch: ', 'Branch: ',
color: Colors.grey[800], color: Colors.grey[800],
fontSize: 14 fontSize: 12
), ),
Texts( Texts(
branch?? '', branch?? '',
fontSize: 14 fontSize: 12
) )
], ],
), ),
@ -418,11 +418,11 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
Texts( Texts(
'Clinic: ', 'Clinic: ',
color: Colors.grey[800], color: Colors.grey[800],
fontSize: 14 fontSize: 12
), ),
Texts( Texts(
clinic?? '', clinic?? '',
fontSize: 14 fontSize: 12
) )
], ],
), ),
@ -432,7 +432,7 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
child: Texts( child: Texts(
!isPrescriptions? 'Result Date: ': 'Prescriptions Date ', !isPrescriptions? 'Result Date: ': 'Prescriptions Date ',
color: Colors.grey[800], color: Colors.grey[800],
fontSize: 14, fontSize: 12,
), ),
), ),
Texts( Texts(
@ -495,5 +495,5 @@ class PatientProfileHeaderWhitAppointmentAppBar extends StatelessWidget with Pre
} }
@override @override
Size get preferredSize => Size(double.maxFinite,280); Size get preferredSize => Size(double.maxFinite,290);
} }

@ -0,0 +1,61 @@
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart';
class ExpandableSOAPWidget extends StatelessWidget {
final bool isExpanded;
final Widget child;
final Function onTap;
final headerTitle;
const ExpandableSOAPWidget(
{Key key, this.isExpanded, this.child, this.onTap, this.headerTitle})
: super(key: key);
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(vertical: 20, horizontal: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(
color: HexColor('#707070'),
width: 0.30),
),
child: HeaderBodyExpandableNotifier(
headerWidget: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Texts(headerTitle,
variant: isExpanded ? "bodyText" : '',
bold: isExpanded ? true : false,
fontSize: 20,
color: Colors.black),
Icon(
FontAwesomeIcons.asterisk,
color: AppGlobal.appPrimaryColor,
size: 12,
)
],
),
InkWell(
onTap: onTap,
child: Icon(
isExpanded ? EvaIcons.arrowIosUpwardOutline: EvaIcons.arrowIosDownwardOutline))
],
),
bodyWidget: child,
isExpand: isExpanded,
),
);
}
}

@ -1,9 +1,9 @@
import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/widgets/shared/Text.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class StepsWidget extends StatelessWidget { class StepsWidget extends StatelessWidget {
@ -20,7 +20,7 @@ class StepsWidget extends StatelessWidget {
? Stack( ? Stack(
children: [ children: [
Container( Container(
height: 120, height: 150,
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
color: Colors.transparent, color: Colors.transparent,
child: Center( child: Center(
@ -32,7 +32,7 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: index == 0 ? 15 : 30, top: 45,
left: 0, left: 0,
child: InkWell( child: InkWell(
onTap: () => changeCurrentTab(0), onTap: () => changeCurrentTab(0),
@ -40,152 +40,155 @@ class StepsWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( Container(
width: index == 0 ? 70 : 50, width: 50,
height: index == 0 ? 70 : 50, height:50,
decoration: BoxDecoration( decoration: BoxDecoration(
border: index == 0 border: index == 0
? Border.all(color: Color(0xFFB9382C), width: 2) ? Border.all(color: Color(0xFFCC9B14), width: 2)
: index > 0 : index > 0
? null ? null
: Border.all( : Border.all(
color: Colors.black, width: 0.75), color: Colors.black, width: 0.75),
shape: BoxShape.circle, shape: BoxShape.circle,
color: index == 0 color: index == 0
? Colors.white ? Color(0xFFCC9B14)
: index > 0 : index > 0
? Color(0xFFB9382C) ? Color(0xFF359846)
: Color(0xFFCCCCCC), : Color(0xFFCCCCCC),
), ),
child: Center( child: Center(
child: Texts( child: Icon(FontAwesomeIcons.check, size: 25,
'1', color: Colors.white,)
variant: index == 0 ? "heading2" : "",
bold: true,
color: index == 0
? Colors.black
: index > 0
? Colors.white
: Colors.grey,
),
), ),
), ),
SizedBox( SizedBox(
height: index == 0 ? 5 : 10, height:5
), ),
Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
AppText( AppText(
"SUBJECTIVE", "Subjective",
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 14, fontSize: 14,
), ),
StatusLabel(selectedStepId: index, stepId: 0,),
],
),
], ],
), ),
), ),
), ),
Positioned( Positioned(
top: index == 1 ? 15 : 30, top: 45,
left: MediaQuery.of(context).size.width * 0.28, left: MediaQuery
.of(context)
.size
.width * 0.28,
child: InkWell( child: InkWell(
onTap: () => index >= 1 ? changeCurrentTab(1) : null, onTap: () => index >= 1 ? changeCurrentTab(1) : null,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Container( Container(
width: index == 1 ? 70 : 50, width: 50,
height: index == 1 ? 70 : 50, height: 50,
decoration: BoxDecoration( decoration: BoxDecoration(
border: index == 1 border: index == 1
? Border.all(color: Color(0xFFB9382C), width: 2) ? Border.all(color: Color(0xFFCC9B14), width: 2)
: index > 2 : index > 2
? null ? null
: Border.all( : Border.all(
color: Color(0xFFCCCCCC), width: 0.75), color: Color(0xFFCCCCCC), width: 0.75),
shape: BoxShape.circle, shape: BoxShape.circle,
color: index == 1 color: index == 1
? Colors.white ? Color(0xFFCC9B14)
: index > 1 : index > 1
? Color(0xFFB9382C) ? Color(0xFF359846)
: Color(0xFFCCCCCC), : Color(0xFFCCCCCC),
), ),
child: Center( child: Center(
child: Texts( child: Icon(FontAwesomeIcons.check, size: 25,
'2', color: Colors.white,)
variant: index == 1 ? "heading2" : '',
bold: true,
color: index == 1
? Colors.black
: index > 1
? Colors.white
: Colors.grey,
),
), ),
), ),
SizedBox( SizedBox(
height: index == 1 ? 5 : 10, height:5,
), ),
Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
AppText( AppText(
"OBJECTIVE", "Objective",
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize:14, fontSize: 14,
),
StatusLabel(selectedStepId: index, stepId: 1,),
],
), ),
], ],
), ),
), ),
), ),
Positioned( Positioned(
top: index == 2 ? 15 : 30, top: 45,
left: MediaQuery.of(context).size.width * 0.52, left: MediaQuery
.of(context)
.size
.width * 0.52,
child: InkWell( child: InkWell(
onTap: () { onTap: () {
if(index >= 3) if (index >= 3)
changeCurrentTab(2); changeCurrentTab(2);
}, },
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Container( Container(
width: index == 2 ? 70 : 50, width:50,
height: index == 2 ? 70 : 50, height:50,
decoration: BoxDecoration( decoration: BoxDecoration(
border: index == 2 border: index == 2
? Border.all(color: Color(0xFFB9382C), width: 2) ? Border.all(color: Color(0xFFCC9B14), width: 2)
: index > 2 : index > 2
? null ? null
: Border.all( : Border.all(
color: Color(0xFFCCCCCC), width: 0.75), color: Color(0xFFCCCCCC), width: 0.75),
shape: BoxShape.circle, shape: BoxShape.circle,
color: index == 2 color: index == 2
? Colors.white ? Color(0xFFCC9B14)
: index > 2 : index > 2
? Color(0xFFB9382C) ? Color(0xFFCC9B14)
: Color(0xFFCCCCCC), : Color(0xFFCCCCCC),
), ),
child: Center( child: Center(
child: Texts( child: Icon(FontAwesomeIcons.check, size: 25,
'3', color: Colors.white,)
variant: index == 2 ? "heading2" : '',
bold: true,
color: index == 2
? Colors.black
: index > 2
? Colors.white
: Colors.grey,
),
), ),
), ),
SizedBox( SizedBox(
height: index == 2 ? 5 : 10, height:5,
), ),
Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
AppText( AppText(
"ASSESSMENT", "Assessment",
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize:14, fontSize: 14,
),
StatusLabel(selectedStepId: index, stepId: 2,),
],
), ),
], ],
), ),
), ),
), ),
Positioned( Positioned(
top: index == 3 ? 15 : 30, top: 45,
right: 0, right: 0,
child: InkWell( child: InkWell(
onTap: () => index >= 3 ? changeCurrentTab(4) : null, onTap: () => index >= 3 ? changeCurrentTab(4) : null,
@ -193,44 +196,41 @@ class StepsWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Container( Container(
width: index == 3 ? 70 : 50, width:50,
height: index == 3 ? 70 : 50, height:50,
decoration: BoxDecoration( decoration: BoxDecoration(
border: index == 3 border: index == 3
? Border.all(color: Color(0xFFB9382C), width: 2) ? Border.all(color: Color(0xFFCC9B14), width: 2)
: index > 3 : index > 3
? null ? null
: Border.all( : Border.all(
color: Color(0xFFCCCCCC), width: 0.75), color: Color(0xFFCCCCCC), width: 0.75),
shape: BoxShape.circle, shape: BoxShape.circle,
color: index == 3 color: index == 3
? Colors.white ? Color(0xFFCC9B14)
: index > 3 : index > 3
? Color(0xFFB9382C) ? Color(0xFF359846)
: Color(0xFFCCCCCC), : Color(0xFFCCCCCC),
), ),
child: Center( child: Center(
child: Texts( child: Icon(FontAwesomeIcons.check, size: 25,
'4', color: Colors.white,)
variant: index == 3 ? "heading2" : '',
bold: true,
color: index == 3
? Colors.black
: index > 3
? Colors.white
: Colors.grey,
), ),
)
), ),
SizedBox( SizedBox(
height: index == 3 ? 5 : 10, height:5,
), ),
Center( Center(
child: AppText( child: Column(
"PLAN", children: [
AppText(
"Plan",
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
textAlign: TextAlign.center, textAlign: TextAlign.center,
fontSize:14, fontSize: 14,
),
StatusLabel(selectedStepId: index, stepId: 3,),
],
), ),
), ),
], ],
@ -242,8 +242,11 @@ class StepsWidget extends StatelessWidget {
: Stack( : Stack(
children: [ children: [
Container( Container(
height: 120, height: 150,
width: MediaQuery.of(context).size.width, width: MediaQuery
.of(context)
.size
.width,
color: Colors.transparent, color: Colors.transparent,
child: Center( child: Center(
child: Divider( child: Divider(
@ -254,7 +257,7 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: index == 0 ? 15 : 30, top: 45,
right: 0, right: 0,
child: InkWell( child: InkWell(
onTap: () => changeCurrentTab(0), onTap: () => changeCurrentTab(0),
@ -262,37 +265,29 @@ class StepsWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( Container(
width: index == 0 ? 70 : 50, width: 50,
height: index == 0 ? 70 : 50, height:50,
decoration: BoxDecoration( decoration: BoxDecoration(
border: index == 0 border: index == 0
? Border.all(color: Color(0xFFB9382C), width: 2) ? Border.all(color: Color(0xFFCC9B14), width: 2)
: index > 0 : index > 0
? null ? null
: Border.all( : Border.all(
color: Colors.black, width: 0.75), color: Colors.black, width: 0.75),
shape: BoxShape.circle, shape: BoxShape.circle,
color: index == 0 color: index == 0
? Colors.white ? Color(0xFFCC9B14)
: index > 0 : index > 0
? Color(0xFFB9382C) ? Color(0xFF359846)
: Color(0xFFCCCCCC), : Color(0xFFCCCCCC),
), ),
child: Center( child: Center(
child: Texts( child: Icon(FontAwesomeIcons.check, size: 25,
'1', color: Colors.white,)
variant: index == 0 ? "heading2" : "",
bold: true,
color: index == 0
? Colors.black
: index > 0
? Colors.white
: Colors.grey,
),
), ),
), ),
SizedBox( SizedBox(
height: index == 0 ? 5 : 10, height:5
), ),
AppText( AppText(
"شخصي", "شخصي",
@ -304,45 +299,40 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: index == 1 ? 15 : 30, top: 45,
right: MediaQuery.of(context).size.width * 0.28, right: MediaQuery
.of(context)
.size
.width * 0.28,
child: InkWell( child: InkWell(
onTap: () => index >= 2 ? changeCurrentTab(1) : null, onTap: () => index >= 2 ? changeCurrentTab(1) : null,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Container( Container(
width: index == 1 ? 70 : 50, width: 50,
height: index == 1 ? 70 : 50, height: 50,
decoration: BoxDecoration( decoration: BoxDecoration(
border: index == 1 border: index == 1
? Border.all(color: Color(0xFFB9382C), width: 2) ? Border.all(color: Color(0xFFCC9B14), width: 2)
: index > 2 : index > 2
? null ? null
: Border.all( : Border.all(
color: Color(0xFFCCCCCC), width: 0.75), color: Color(0xFFCCCCCC), width: 0.75),
shape: BoxShape.circle, shape: BoxShape.circle,
color: index == 1 color: index == 1
? Colors.white ? Color(0xFFCC9B14)
: index > 1 : index > 1
? Color(0xFFB9382C) ? Color(0xFF359846)
: Color(0xFFCCCCCC), : Color(0xFFCCCCCC),
), ),
child: Center( child: Center(
child: Texts( child: Icon(FontAwesomeIcons.check, size: 25,
'2', color: Colors.white,)
variant: index == 1 ? "heading2" : '',
bold: true,
color: index == 1
? Colors.black
: index > 1
? Colors.white
: Colors.grey,
),
), ),
), ),
SizedBox( SizedBox(
height: index == 1 ? 5 : 10, height:5
), ),
AppText( AppText(
"هدف", "هدف",
@ -354,45 +344,40 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: index == 2 ? 15 : 30, top: 50,
right: MediaQuery.of(context).size.width * 0.52, right: MediaQuery
.of(context)
.size
.width * 0.52,
child: InkWell( child: InkWell(
onTap: () => index >= 3 ? changeCurrentTab(2) : null, onTap: () => index >= 3 ? changeCurrentTab(2) : null,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Container( Container(
width: index == 2 ? 70 : 50, width:50,
height: index == 2 ? 70 : 50, height:50,
decoration: BoxDecoration( decoration: BoxDecoration(
border: index == 2 border: index == 2
? Border.all(color: Color(0xFFB9382C), width: 2) ? Border.all(color: Color(0xFFCC9B14), width: 2)
: index > 2 : index > 2
? null ? null
: Border.all( : Border.all(
color: Color(0xFFCCCCCC), width: 0.75), color: Color(0xFFCCCCCC), width: 0.75),
shape: BoxShape.circle, shape: BoxShape.circle,
color: index == 2 color: index == 2
? Colors.white ? Color(0xFFCC9B14)
: index > 2 : index > 2
? Color(0xFFB9382C) ? Color(0xFFCC9B14)
: Color(0xFFCCCCCC), : Color(0xFFCCCCCC),
), ),
child: Center( child: Center(
child: Texts( child: Icon(FontAwesomeIcons.check, size: 25,
'3', color: Colors.white,)
variant: index == 2 ? "heading2" : '',
bold: true,
color: index == 2
? Colors.black
: index > 2
? Colors.white
: Colors.grey,
),
), ),
), ),
SizedBox( SizedBox(
height: index == 2 ? 5 : 10, height:5,
), ),
Padding( Padding(
@ -408,7 +393,7 @@ class StepsWidget extends StatelessWidget {
), ),
), ),
Positioned( Positioned(
top: index == 3 ? 15 : 30, top: 45,
left: 0, left: 0,
child: InkWell( child: InkWell(
onTap: () => index >= 3 ? changeCurrentTab(4) : null, onTap: () => index >= 3 ? changeCurrentTab(4) : null,
@ -416,37 +401,29 @@ class StepsWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Container( Container(
width: index == 3 ? 70 : 50, width:50,
height: index == 3 ? 70 : 50, height:50,
decoration: BoxDecoration( decoration: BoxDecoration(
border: index == 3 border: index == 3
? Border.all(color: Color(0xFFB9382C), width: 2) ? Border.all(color: Color(0xFFCC9B14), width: 2)
: index > 3 : index > 3
? null ? null
: Border.all( : Border.all(
color: Color(0xFFCCCCCC), width: 0.75), color: Color(0xFFCCCCCC), width: 0.75),
shape: BoxShape.circle, shape: BoxShape.circle,
color: index == 3 color: index == 3
? Colors.white ? Color(0xFFCC9B14)
: index > 3 : index > 3
? Color(0xFFB9382C) ? Color(0xFFCC9B14)
: Color(0xFFCCCCCC), : Color(0xFFCCCCCC),
), ),
child: Center( child: Center(
child: Texts( child: Icon(FontAwesomeIcons.check, size: 25,
'4', color: Colors.white,)
variant: index == 3 ? "heading2" : '',
bold: true,
color: index == 3
? Colors.black
: index > 3
? Colors.white
: Colors.grey,
),
), ),
), ),
SizedBox( SizedBox(
height: index == 3 ? 5 : 10, height:5,
), ),
Container( Container(
margin: EdgeInsets.only(right:index == 3? 15:0), margin: EdgeInsets.only(right:index == 3? 15:0),
@ -464,3 +441,39 @@ class StepsWidget extends StatelessWidget {
); );
} }
} }
class StatusLabel extends StatelessWidget {
const StatusLabel({
Key key, this.stepId, this.selectedStepId,
}) : super(key: key);
final int stepId;
final int selectedStepId;
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(horizontal: 5, vertical: 3),
decoration: BoxDecoration(
color: stepId == selectedStepId ? Color(0xFFF1E9D3) : stepId <
selectedStepId ? Color(0xFFD8E8DB) : Color(0xFFCCCCCC),
borderRadius: BorderRadius.all(
Radius.circular(5.0),
),
border: Border.all(
color: HexColor('#707070'),
width: 0.30),
),
child: AppText(
stepId == selectedStepId ? "inProgress" : stepId < selectedStepId
? "Completed"
: " Locked ",
fontWeight: FontWeight.bold,
textAlign: TextAlign.center,
fontSize: 10,
color: stepId == selectedStepId ? Color(0xFFCC9B14) : stepId <
selectedStepId ? Color(0xFF359846) : Color(0xFF969696),
),
);
}
}

@ -0,0 +1,149 @@
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/new_text_Field.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
class UpdateChiefComplaints extends StatelessWidget {
const UpdateChiefComplaints({
Key key,
@required this.formKey,
@required this.complaintsController,
@required this.illnessController,
@required this.medicationController,
}) : super(key: key);
final GlobalKey<FormState> formKey;
final TextEditingController complaintsController;
final TextEditingController illnessController;
final TextEditingController medicationController;
@override
Widget build(BuildContext context) {
return Form(
key: formKey,
child: Column(children: [
SizedBox(
height: 20,
),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(
color: HexColor('#707070'),
width: 0.30),
),
child: NewTextFields(
hintText: TranslationBase.of(context).addChiefComplaints,
controller: complaintsController,
),
),
Container(
margin:
EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
hasLabelText: complaintsController.text != ''
? true
: false,
hintText: TranslationBase
.of(context)
.addChiefComplaints,
fontSize: 13.5,
// hintColor: Colors.black,
showLabelText: true,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 13,
controller: complaintsController,
validator: (value) {
if (value == null || value == "")
return TranslationBase.of(context)
.emptyMessage;
else if (value.length < 25)
return TranslationBase
.of(context)
.chiefComplaintLength;
//"";
else
return null;
}),
),
SizedBox(
height: 20,
),
Container(
margin:
EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
hasLabelText:
illnessController.text != '' ? true : false,
showLabelText: true,
hintText: TranslationBase
.of(context)
.historyOfPresentIllness,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 13,
controller: illnessController,
validator: (value) {
if (value == null || value == "")
return TranslationBase.of(context)
.emptyMessage;
else
return null;
}),
),
SizedBox(
height: 20,
),
SizedBox(
height: 10,
),
UpdateMedicationWidget(
medicationController: medicationController,
),
SizedBox(
height: 10,
),
Container(
margin:
EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
hasLabelText: medicationController.text != ''
? true
: false,
showLabelText: true,
hintText: TranslationBase
.of(context)
.currentMedications,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 23,
minLines: 10,
controller: medicationController,
validator: (value) {
if (value == null || value == "")
return TranslationBase
.of(context)
.emptyMessage;
else
return null;
}),
),
SizedBox(
height: 10,
),
]),
);
}
}

@ -1,5 +1,4 @@
import 'package:doctor_app_flutter/client/base_app_client.dart'; import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/config/config.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart'; import 'package:doctor_app_flutter/core/enum/master_lookup_key.dart';
import 'package:doctor_app_flutter/core/enum/viewstate.dart'; import 'package:doctor_app_flutter/core/enum/viewstate.dart';
@ -17,17 +16,17 @@ import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_Chief_complaints.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_allergies_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_history_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_history_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_medication_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_medication_widget.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/TextFields.dart';
import 'package:doctor_app_flutter/widgets/shared/app_buttons_widget.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_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/expandable-widget-header-body.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:hexcolor/hexcolor.dart';
import '../expandable_SOAP_widget.dart';
class UpdateSubjectivePage extends StatefulWidget { class UpdateSubjectivePage extends StatefulWidget {
final Function changePageViewIndex; final Function changePageViewIndex;
@ -220,6 +219,9 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
}, },
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
isShowAppBar: false, isShowAppBar: false,
backgroundColor: Theme
.of(context)
.scaffoldBackgroundColor,
// baseViewModel: model, // baseViewModel: model,
body: SingleChildScrollView( body: SingleChildScrollView(
physics: ScrollPhysics(), physics: ScrollPhysics(),
@ -232,243 +234,103 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
SizedBox( SizedBox(
height: 30, height: 30,
), ),
HeaderBodyExpandableNotifier( ExpandableSOAPWidget(
headerWidget: Row( headerTitle: TranslationBase
mainAxisAlignment: MainAxisAlignment.spaceBetween, .of(context)
children: [ .chiefComplaints
Row( .toUpperCase(),
children: [
Texts(TranslationBase.of(context).chiefComplaints.toUpperCase(),
variant: isChiefExpand ? "bodyText" : '',
bold: isChiefExpand ? true : false,
color: Colors.black),
Icon(
FontAwesomeIcons.asterisk,
color: AppGlobal.appPrimaryColor,
size: 12,
)
],
),
InkWell(
onTap: () { onTap: () {
setState(() { setState(() {
isChiefExpand = !isChiefExpand; isChiefExpand = !isChiefExpand;
}); });
}, },
child: Icon( child: UpdateChiefComplaints(formKey: formKey, complaintsController: complaintsController, illnessController: illnessController, medicationController: medicationController),
isChiefExpand ? EvaIcons.minus : EvaIcons.plus)) isExpanded: isChiefExpand,
],
),
bodyWidget: Form(
key: formKey,
child: Column(children: [
SizedBox(
height: 20,
),
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
hasLabelText: complaintsController.text != ''
? true
: false,
hintText: TranslationBase.of(context)
.addChiefComplaints,
fontSize: 13.5,
// hintColor: Colors.black,
showLabelText: true,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 13,
controller: complaintsController,
validator: (value) {
if (value == null || value == "")
return TranslationBase.of(context)
.emptyMessage;
else if (value.length < 25)
return TranslationBase
.of(context)
.chiefComplaintLength;
//"";
else
return null;
}),
),
SizedBox(
height: 20,
),
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
hasLabelText: illnessController.text != ''
? true
: false,
showLabelText: true,
hintText: TranslationBase
.of(context)
.historyOfPresentIllness,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 25,
minLines: 13,
controller: illnessController,
validator: (value) {
if (value == null || value == "")
return TranslationBase.of(context)
.emptyMessage;
else
return null;
}),
), ),
SizedBox( SizedBox(
height: 20, height: 30,
),
SizedBox(
height: 10,
),
UpdateMedicationWidget(medicationController: medicationController,),
SizedBox(
height: 10,
),
Container(
margin: EdgeInsets.only(left: 10, right: 10, top: 15),
child: TextFields(
hasLabelText: medicationController.text != ''
? true
: false,
showLabelText: true,
hintText: TranslationBase
.of(context)
.currentMedications,
fontSize: 13.5,
// hintColor: Colors.black,
fontWeight: FontWeight.w600,
maxLines: 23,
minLines: 10,
controller: medicationController,
validator: (value) {
if (value == null || value == "")
return TranslationBase
.of(context)
.emptyMessage;
else
return null;
}),
),
SizedBox(
height: 10,
), ),
]),
),
isExpand: isChiefExpand,
),
SizedBox( ExpandableSOAPWidget(
height: 30, headerTitle: TranslationBase
),
Container(
width: double.infinity,
height: 1,
color: Color(0xffCCCCCC),
),
SizedBox(
height: 30,
),
HeaderBodyExpandableNotifier(
headerWidget: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Texts(TranslationBase
.of(context) .of(context)
.histories .histories
.toUpperCase(), .toUpperCase(),
variant: isHistoryExpand ? "bodyText" : '',
bold: isHistoryExpand ? true : false,
color: Colors.black),
],
),
InkWell(
onTap: () { onTap: () {
setState(() { setState(() {
isHistoryExpand = !isHistoryExpand; isHistoryExpand = !isHistoryExpand;
}); });
}, },
child: Icon(isHistoryExpand child: Column(
? EvaIcons.minus
: EvaIcons.plus))
],
),
bodyWidget: Column(
children: [ children: [
UpdateHistoryWidget(myHistoryList: widget.myHistoryList) UpdateHistoryWidget(myHistoryList: widget.myHistoryList)
], ],
), ),
isExpand: isHistoryExpand, isExpanded: isHistoryExpand,
),
SizedBox(
height: 30,
),
Container(
width: double.infinity,
height: 1,
color: Color(0xffCCCCCC),
), ),
SizedBox( SizedBox(
height: 30, height: 30,
), ),
HeaderBodyExpandableNotifier(
headerWidget: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, ExpandableSOAPWidget(
children: [ headerTitle: TranslationBase
Row(
children: [
Texts(TranslationBase
.of(context) .of(context)
.allergiesSoap .allergiesSoap
.toUpperCase(), .toUpperCase(),
variant: isAllergiesExpand ? "bodyText" : '',
bold: isAllergiesExpand ? true : false,
color: Colors.black),
],
),
InkWell(
onTap: () { onTap: () {
setState(() { setState(() {
isAllergiesExpand = !isAllergiesExpand; isAllergiesExpand = !isAllergiesExpand;
}); });
}, },
child: Icon(isAllergiesExpand child: Column(
? EvaIcons.minus
: EvaIcons.plus))
],
),
bodyWidget:Column(
children: [ children: [
UpdateAllergiesWidget(myAllergiesList: widget.myAllergiesList,), UpdateAllergiesWidget(myAllergiesList: widget
.myAllergiesList,),
SizedBox( SizedBox(
height: 30, height: 30,
), ),
], ],
) ),
, isExpanded: isAllergiesExpand,
isExpand: isAllergiesExpand,
), ),
SizedBox( SizedBox(
height: 30, height:MediaQuery.of(context).size.height * 0.2,
),
],
),
), ),
Container(
width: double.infinity,
height: 1,
color: Color(0xffCCCCCC),
), ),
),
bottomSheet: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10.0),
),
border: Border.all(
color: HexColor('#707070'),
width: 0.30),
),
height: MediaQuery
.of(context)
.size
.height * 0.15,
width: double.infinity,
child: Column(
children: [
SizedBox( SizedBox(
height: 30, height: 15,
), ),
AppButton( Container(child: FractionallySizedBox(
title: TranslationBase.of(context).next, widthFactor: .80,
child: Center(
child: AppButton(
title: TranslationBase
.of(context)
.next,
loading: model.state == ViewState.BusyLocal, loading: model.state == ViewState.BusyLocal,
onPressed: () async { onPressed: () async {
addSubjectiveInfo( addSubjectiveInfo(
@ -477,11 +339,13 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
myHistoryList: widget.myHistoryList); myHistoryList: widget.myHistoryList);
}, },
), ),
],
),
),
), ),
),),
SizedBox(
height: 15,
), ),
],
),),
), ),
); );
} }
@ -624,12 +488,15 @@ class _UpdateSubjectivePageState extends State<UpdateSubjectivePage> {
numberOfWeeks: 0); numberOfWeeks: 0);
if (model.patientChiefComplaintList.isEmpty) { if (model.patientChiefComplaintList.isEmpty) {
// TODO: make it postChiefComplaint after it start to work // TODO: make it postChiefComplaint after it start to work
postChiefComplaintRequestModel.editedBy=''; postChiefComplaintRequestModel.editedBy = '';
await model.postChiefComplaint(postChiefComplaintRequestModel); await model.postChiefComplaint(postChiefComplaintRequestModel);
} else { } else {
await model.patchChiefComplaint(postChiefComplaintRequestModel); await model.patchChiefComplaint(postChiefComplaintRequestModel);
} }
} }
} }
} }

@ -6,8 +6,6 @@ import 'package:doctor_app_flutter/models/SOAP/my_selected_examination.dart';
import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart'; import 'package:doctor_app_flutter/models/SOAP/my_selected_history.dart';
import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart';
import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/patient-page-header-widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/steps_widget.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/steps_widget.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/subjective/update_subjective_page.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_assessment_page.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/soap_update/update_assessment_page.dart';
@ -17,11 +15,13 @@ import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../patient-profile-header-new-design.dart';
class UpdateSoapIndex extends StatefulWidget { class UpdateSoapIndex extends StatefulWidget {
final bool isUpdate; final bool isUpdate;
const UpdateSoapIndex({Key key, this.isUpdate}) : super(key: key); const UpdateSoapIndex({Key key, this.isUpdate}) : super(key: key);
@override @override
_UpdateSoapIndexState createState() => _UpdateSoapIndexState(); _UpdateSoapIndexState createState() => _UpdateSoapIndexState();
} }
@ -65,30 +65,39 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
builder: (_, model, w) => AppScaffold( builder: (_, model, w) => AppScaffold(
// baseViewModel: model, // baseViewModel: model,
isLoading: _isLoading, isLoading: _isLoading,
appBarTitle: TranslationBase.of(context).healthRecordInformation, isShowAppBar: false,
// appBarTitle: TranslationBase.of(context).healthRecordInformation,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( Container(
decoration: decoration: BoxDecoration(
BoxDecoration(boxShadow: <BoxShadow>[], color: Colors.white), boxShadow: <BoxShadow>[],
color: Theme.of(context).scaffoldBackgroundColor),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
PatientPageHeaderWidget(patient), // PatientPageHeaderWidget(patient),
PatientProfileHeaderNewDesign(patient, '7', '7'),
Container(
width: double.infinity,
height: 1,
color: Color(0xffCCCCCC),
),
FractionallySizedBox( FractionallySizedBox(
child: SingleChildScrollView( child: SingleChildScrollView(
child: Container( child: Container(
color: Theme.of(context).scaffoldBackgroundColor,
height: MediaQuery.of(context).size.height * 0.75, height: MediaQuery.of(context).size.height * 0.75,
child: Column( child: Column(
children: [ children: [
Container( Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(
left: left: MediaQuery.of(context).size.width *
MediaQuery.of(context).size.width * 0.05, 0.05,
right: right: MediaQuery.of(context).size.width *
MediaQuery.of(context).size.width * 0.05), 0.05),
child: StepsWidget( child: StepsWidget(
index: _currentIndex, index: _currentIndex,
changeCurrentTab: changePageViewIndex, changeCurrentTab: changePageViewIndex,
@ -96,6 +105,7 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
), ),
Expanded( Expanded(
child: PageView( child: PageView(
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
controller: _controller, controller: _controller,
onPageChanged: (index) { onPageChanged: (index) {
@ -110,28 +120,28 @@ class _UpdateSoapIndexState extends State<UpdateSoapIndex>
myAllergiesList: myAllergiesList, myAllergiesList: myAllergiesList,
myHistoryList: myHistoryList, myHistoryList: myHistoryList,
patientInfo: patient, patientInfo: patient,
changeLoadingState:changeLoadingState changeLoadingState: changeLoadingState
), ),
UpdateObjectivePage( UpdateObjectivePage(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,
mySelectedExamination: mySelectedExamination:
mySelectedExamination, mySelectedExamination,
patientInfo: patient, patientInfo: patient,
changeLoadingState:changeLoadingState changeLoadingState: changeLoadingState
), ),
UpdateAssessmentPage( UpdateAssessmentPage(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,
mySelectedAssessmentList: mySelectedAssessmentList:
mySelectedAssessment, mySelectedAssessment,
patientInfo: patient, patientInfo: patient,
changeLoadingState:changeLoadingState changeLoadingState: changeLoadingState
), ),
UpdatePlanPage( UpdatePlanPage(
changePageViewIndex: changePageViewIndex, changePageViewIndex: changePageViewIndex,
patientInfo: patient, patientInfo: patient,
patientProgressNote: patientProgressNote, patientProgressNote: patientProgressNote,
changeLoadingState:changeLoadingState changeLoadingState: changeLoadingState
) )
], ],

@ -105,9 +105,11 @@ class DoctorCard extends StatelessWidget {
Texts( Texts(
'order No:', 'order No:',
color: Colors.grey[500], color: Colors.grey[500],
fontSize: 14,
), ),
Texts( Texts(
orderNo ?? '', orderNo ?? '',
fontSize: 14,
) )
], ],
), ),
@ -116,10 +118,12 @@ class DoctorCard extends StatelessWidget {
children: <Widget>[ children: <Widget>[
Texts( Texts(
'Invoice:', 'Invoice:',
fontSize: 14,
color: Colors.grey[500], color: Colors.grey[500],
), ),
Texts( Texts(
invoiceNO, invoiceNO,
fontSize: 14,
) )
], ],
), ),
@ -129,9 +133,11 @@ class DoctorCard extends StatelessWidget {
Texts( Texts(
'Clinic: ', 'Clinic: ',
color: Colors.grey[500], color: Colors.grey[500],
fontSize: 14,
), ),
Texts( Texts(
clinic, clinic,
fontSize: 14,
) )
], ],
), ),
@ -140,10 +146,12 @@ class DoctorCard extends StatelessWidget {
children: <Widget>[ children: <Widget>[
Texts( Texts(
'Branch: ', 'Branch: ',
fontSize: 14,
color: Colors.grey[500], color: Colors.grey[500],
), ),
Texts( Texts(
branch, branch,
fontSize: 14,
) )
], ],
) )

@ -1,14 +1,9 @@
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/util/date-utils.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart'; import 'package:doctor_app_flutter/widgets/patients/profile/large_avatar.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'StarRating.dart';
import 'Text.dart'; import 'Text.dart';
class DoctorCardInsurance extends StatelessWidget { class DoctorCardInsurance extends StatelessWidget {
@ -41,22 +36,34 @@ class DoctorCardInsurance extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
return Container( return Container(
width: double.maxFinite,
height: 160,
margin: EdgeInsets.all(10), margin: EdgeInsets.all(10),
padding: EdgeInsets.only(left: 0, right: 5, bottom: 5, top: 5),
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( borderRadius: BorderRadius.circular(15),
left: BorderSide(
color: approvalStatus == "Approved"
? Color(0xff359846)
: Color(0xffD02127),
width: 3.5),
top: BorderSide(color: Colors.white, width: 0.5),
bottom: BorderSide(color: Colors.white, width: 0.5),
right: BorderSide(color: Colors.white, width: 0.5),
),
color: Colors.white, color: Colors.white,
), ),
child: Padding( child: Container(
padding: const EdgeInsets.all(15.0), child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
height: 160,
width: 5,
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10),
bottomLeft: Radius.circular(10),
),
color: approvalStatus == "Approved" ? Color(0xff359846) : Color(0xffD02127),
),
),
Expanded(
child: Container(
padding: EdgeInsets.only(
left: projectViewModel.isArabic ? 0 : 15,
right: projectViewModel.isArabic ? 15 : 0),
child: InkWell( child: InkWell(
onTap: onTap, onTap: onTap,
child: Column( child: Column(
@ -80,7 +87,7 @@ class DoctorCardInsurance extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.all(5.0), padding: const EdgeInsets.all(5.0),
child: Texts( child: Texts(
'$patientOut'.replaceAll(" ", ""), '$patientOut',
color: Colors.white, color: Colors.white,
fontSize: 13.0, fontSize: 13.0,
), ),
@ -178,6 +185,10 @@ class DoctorCardInsurance extends StatelessWidget {
), ),
), ),
), ),
),
],
),
),
); );
} }
} }

@ -35,13 +35,13 @@ class _DrawerItemState extends State<DrawerItem> {
color: widget.color ?? Colors.black87, color: widget.color ?? Colors.black87,
size: SizeConfig.imageSizeMultiplier * 5, size: SizeConfig.imageSizeMultiplier * 5,
), ),
Column( Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Container( Container(
width: MediaQuery.of(context).size.width *0.45, width: MediaQuery.of(context).size.width *0.45,
child: Expanded(
child: AppText( child: AppText(
widget.title, widget.title,
marginLeft: 5, marginLeft: 5,
@ -52,7 +52,6 @@ class _DrawerItemState extends State<DrawerItem> {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
),
AppText( AppText(
widget.subTitle, widget.subTitle,
visibility: !widget.subTitle.isNullOrEmpty(), visibility: !widget.subTitle.isNullOrEmpty(),
@ -62,6 +61,7 @@ class _DrawerItemState extends State<DrawerItem> {
), ),
], ],
), ),
),
], ],
)); ));
} }

@ -0,0 +1,229 @@
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class NumberTextInputFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue, TextEditingValue newValue) {
final int newTextLength = newValue.text.length;
int selectionIndex = newValue.selection.end;
int usedSubstringIndex = 0;
final StringBuffer newText = StringBuffer();
if (newTextLength >= 1) {
newText.write('(');
if (newValue.selection.end >= 1) selectionIndex++;
}
if (newTextLength >= 4) {
newText.write(newValue.text.substring(0, usedSubstringIndex = 3) + ') ');
if (newValue.selection.end >= 3) selectionIndex += 2;
}
if (newTextLength >= 7) {
newText.write(newValue.text.substring(3, usedSubstringIndex = 6) + '-');
if (newValue.selection.end >= 6) selectionIndex++;
}
if (newTextLength >= 11) {
newText.write(newValue.text.substring(6, usedSubstringIndex = 10) + ' ');
if (newValue.selection.end >= 10) selectionIndex++;
}
// Dump the rest.
if (newTextLength >= usedSubstringIndex)
newText.write(newValue.text.substring(usedSubstringIndex));
return TextEditingValue(
text: newText.toString(),
selection: TextSelection.collapsed(offset: selectionIndex),
);
}
}
final _mobileFormatter = NumberTextInputFormatter();
class NewTextFields extends StatefulWidget {
NewTextFields(
{Key key,
this.type,
this.hintText,
this.suffixIcon,
this.autoFocus,
this.onChanged,
this.initialValue,
this.minLines,
this.maxLines,
this.inputFormatters,
this.padding,
this.focus = false,
this.maxLengthEnforced = true,
this.suffixIconColor,
this.inputAction,
this.onSubmit,
this.keepPadding = true,
this.textCapitalization = TextCapitalization.none,
this.controller,
this.keyboardType,
this.validator,
this.borderOnlyError = false,
this.onSaved,
this.onSuffixTap,
this.readOnly: false,
this.maxLength,
this.prefixIcon,
this.bare = false,
this.onTap,
this.fontSize = 16.0,
this.fontWeight = FontWeight.w700,
this.autoValidate = false,
this.hintColor,
this.isEnabled = true})
: super(key: key);
final String hintText;
// final String initialValue;
final String type;
final bool autoFocus;
final IconData suffixIcon;
final Color suffixIconColor;
final Icon prefixIcon;
final VoidCallback onTap;
final TextEditingController controller;
final TextInputType keyboardType;
final FormFieldValidator validator;
final Function onSaved;
final Function onSuffixTap;
final Function onChanged;
final Function onSubmit;
final bool readOnly;
final int maxLength;
final int minLines;
final int maxLines;
final bool maxLengthEnforced;
final bool bare;
final bool isEnabled;
final TextInputAction inputAction;
final double fontSize;
final FontWeight fontWeight;
final bool keepPadding;
final TextCapitalization textCapitalization;
final List<TextInputFormatter> inputFormatters;
final bool autoValidate;
final EdgeInsets padding;
final bool focus;
final bool borderOnlyError;
final Color hintColor;
final String initialValue;
@override
_NewTextFieldsState createState() => _NewTextFieldsState();
}
class _NewTextFieldsState extends State<NewTextFields> {
final FocusNode _focusNode = FocusNode();
bool focus = false;
bool view = false;
@override
void initState() {
super.initState();
_focusNode.addListener(() {
setState(() {
focus = _focusNode.hasFocus;
});
});
}
@override
void didUpdateWidget(NewTextFields oldWidget) {
if (widget.focus) _focusNode.requestFocus();
super.didUpdateWidget(oldWidget);
}
@override
void dispose() {
_focusNode.dispose();
super.dispose();
}
bool _determineReadOnly() {
if (widget.readOnly != null && widget.readOnly) {
_focusNode.unfocus();
return true;
} else {
return false;
}
}
@override
Widget build(BuildContext context) {
return AnimatedContainer(
duration: Duration(milliseconds: 300),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white),
child: Container(
margin: EdgeInsets.only(top: 8),
child: TextFormField(
enabled: widget.isEnabled,
initialValue: widget.initialValue,
keyboardAppearance: Theme.of(context).brightness,
scrollPhysics: BouncingScrollPhysics(),
autovalidate: widget.autoValidate,
textCapitalization: widget.textCapitalization,
onFieldSubmitted: widget.inputAction == TextInputAction.next
? (widget.onSubmit != null
? widget.onSubmit
: (val) {
_focusNode.nextFocus();
})
: widget.onSubmit,
textInputAction: widget.inputAction,
minLines: widget.minLines ?? 1,
maxLines: widget.maxLines ?? 1,
maxLengthEnforced: widget.maxLengthEnforced,
onChanged: widget.onChanged,
focusNode: _focusNode,
maxLength: widget.maxLength ?? null,
controller: widget.controller,
keyboardType: widget.keyboardType,
readOnly: _determineReadOnly(),
obscureText: widget.type == "password" && !view ? true : false,
autofocus: widget.autoFocus ?? false,
validator: widget.validator,
onSaved: widget.onSaved,
style: Theme.of(context).textTheme.body2.copyWith(
fontSize: widget.fontSize, fontWeight: widget.fontWeight),
inputFormatters: widget.keyboardType == TextInputType.phone
? <TextInputFormatter>[
WhitelistingTextInputFormatter.digitsOnly,
_mobileFormatter,
]
: widget.inputFormatters,
decoration: InputDecoration(
labelText: widget.hintText,
labelStyle:
TextStyle(color: Theme.of(context).textTheme.bodyText1.color),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Theme.of(context).errorColor.withOpacity(0.5),
width: 1.0),
borderRadius: BorderRadius.circular(12.0)),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Theme.of(context).errorColor.withOpacity(0.5),
width: 1.0),
borderRadius: BorderRadius.circular(8.0)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.white, width: 1.0),
borderRadius: BorderRadius.circular(12)),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.white, width: 1.0),
borderRadius: BorderRadius.circular(12)),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.white, width: 1.0),
borderRadius: BorderRadius.circular(12),
),
),
),
),
);
}
}
Loading…
Cancel
Save