Merge branch 'sultan-patientapp' into 'development'

Sultan patientapp

See merge request Cloud_Solution/diplomatic-quarter!288
merge-update-with-lab-changes
Mohammad Aljammal 5 years ago
commit a018eab316

@ -1961,20 +1961,34 @@ const Map localizedValues = {
"en": "Your session has timed out, Please try again", "en": "Your session has timed out, Please try again",
"ar": "انتهت مهلة جلسة الخاص بها. يرجى المحاولة مرة أخرى" "ar": "انتهت مهلة جلسة الخاص بها. يرجى المحاولة مرة أخرى"
}, },
"ancillary-orders": {"en": "Ancillary Orders", "ar": "الأوامر التبعية"}, "ancillary-orders": {"en": "Ancillary Orders", "ar": "الأوامر التبعية"},
"onlineCheckInAgreement": {"en": "The online check-in is for non-life threatening situationCall the red crescent (number) or go to the nearest emergency department if there are:signs of stroke or heart attack history of seizure or syncope there is limb or life threatening injury picture of severe injuries", "onlineCheckInAgreement": {
"ar": "تسجيل الذهاب الى الطوارئ عبر الإنترنت هو فقط للحالات  التي لا تهدد الحياة يجب الاتصل بالهلال الأحمر (رقم) أو الذهاب إلى أقرب قسم طوارئ إذا كان هناك علامات السكتة الدماغية أو النوبة القلبية او هناك نوبة تشنج او حالة فقدان الوعي او وجود إصابة تهدد أحد الأطراف او تهدد الحياة او وجود إصابات خطيرة"}, "en":
"The online check-in is for non-life threatening situationCall the red crescent (number) or go to the nearest emergency department if there are:signs of stroke or heart attack history of seizure or syncope there is limb or life threatening injury picture of severe injuries",
"ar":
"تسجيل الذهاب الى الطوارئ عبر الإنترنت هو فقط للحالات  التي لا تهدد الحياة يجب الاتصل بالهلال الأحمر (رقم) أو الذهاب إلى أقرب قسم طوارئ إذا كان هناك علامات السكتة الدماغية أو النوبة القلبية او هناك نوبة تشنج او حالة فقدان الوعي او وجود إصابة تهدد أحد الأطراف او تهدد الحياة او وجود إصابات خطيرة"
},
"MRN": {"en": "MRN", "ar": "ایم آر این"}, "MRN": {"en": "MRN", "ar": "ایم آر این"},
"appointment-date": {"en": "Appointment Date", "ar": "تقرری کی تاریخ"}, "appointment-date": {"en": "Appointment Date", "ar": "تقرری کی تاریخ"},
"appointment-no": {"en": "Appointment No", "ar": "تقرری نمبر"}, "appointment-no": {"en": "Appointment No", "ar": "تقرری نمبر"},
"insurance-id": {"en": "Insurance ID", "ar": "انشورنس ID"}, "insurance-id": {"en": "Insurance ID", "ar": "انشورنس ID"},
"chiefComplaints": {"en": "Chief Complaints", "ar": "الشكوى الرئيسة"}, "chiefComplaints": {"en": "Chief Complaints", "ar": "الشكوى الرئيسة"},
"errorChiefComplaints": {"en": "Please Chief Complaints", "ar": "يرجى ادخال الشكوى الرئيسة"}, "errorChiefComplaints": {
"errorExpectedArrivalTimes": {"en": "Please Expected arrival time", "ar": "يرجى ادخال الوقت المتوقع للوصول"}, "en": "Please Chief Complaints",
"expectedArrivalTime": {"en": "Expected arrival time", "ar": "الوقت المتوقع للوصول"}, "ar": "يرجى ادخال الشكوى الرئيسة"
"add-address": { },
"en": "Add new address", "errorExpectedArrivalTimes": {
"ar": "اضف عنوان جديد" "en": "Please Expected arrival time",
"ar": "يرجى ادخال الوقت المتوقع للوصول"
},
"expectedArrivalTime": {
"en": "Expected arrival time",
"ar": "الوقت المتوقع للوصول"
},
"add-address": {"en": "Add new address", "ar": "اضف عنوان جديد"},
"enter-file": {
"en": "Please enter the mobile number and the medical file number",
"ar": "الرجاء إدخال رقم الجوال ورقم الملف الطبي"
} }
}; };

@ -103,7 +103,7 @@ class _AnicllaryOrdersState extends State<AnicllaryOrders>
bottom: BorderSide( bottom: BorderSide(
width: 0.5, width: 0.5,
))), ))),
padding: EdgeInsets.all(5), padding: EdgeInsets.all(15),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [

@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import "package:collection/collection.dart"; import "package:collection/collection.dart";
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
class AnicllaryOrdersDetails extends StatefulWidget { class AnicllaryOrdersDetails extends StatefulWidget {
final dynamic appoNo; final dynamic appoNo;
@ -186,11 +187,60 @@ class _AnicllaryOrdersState extends State<AnicllaryOrdersDetails>
} }
Widget getAncillaryDetails(model) { Widget getAncillaryDetails(model) {
var newMap = groupBy(model.ancillaryListsDetails[0].ancillaryOrderProcList, Map newMap = groupBy(model.ancillaryListsDetails[0].ancillaryOrderProcList,
(obj) => obj.procedureCategoryName); (obj) => obj.procedureCategoryName);
print(newMap); print(newMap);
return Padding( return Padding(
padding: EdgeInsets.only(top: 10, bottom: 10), padding: EdgeInsets.only(top: 10, bottom: 10),
child: Column(children: [])); child: getHeaderDetails(newMap));
}
Widget getHeaderDetails(newMap) {
List<Widget> list = new List<Widget>();
newMap.forEach((key, value) {
list.add(
Texts(
key,
fontWeight: FontWeight.bold,
),
);
list.add(Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [getLabDetails(value)],
));
});
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: list,
);
}
getLabDetails(value) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: value.map<Widget>((result) {
return Container(
width: MediaQuery.of(context).size.width * .9,
padding: EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Expanded(
flex: 3,
child: Text(result.procedureName.toString(),
overflow: TextOverflow.ellipsis)),
Expanded(child: AppText(result.companyShare.toString())),
Expanded(child: AppText(result.companyTaxAmount.toString())),
Expanded(
child: AppText(
result.companyShareWithTax.toString(),
))
],
));
}).toList(),
);
} }
} }

@ -109,58 +109,92 @@ class _InsuranceCardState extends State<InsuranceCard> {
), ),
Column( Column(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.stretch, CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Texts( Row(
TranslationBase.of(context).category +": "+ mainAxisAlignment:
model.insurance[index] MainAxisAlignment.spaceBetween,
.subCategoryDesc, children: [
fontSize: 18.5, Texts(
TranslationBase.of(context)
.category,
fontSize: 18.5),
Texts(
model.insurance[index]
.subCategoryDesc,
fontSize: 18.5)
],
), ),
Row( Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [ children: [
Texts( Texts(
TranslationBase.of(context) TranslationBase.of(context)
.expirationDate +": "+ .expirationDate,
convertDateFormat(model fontSize: 18.5),
.insurance[index].cardValidTo), Texts(
fontSize: 18.5, convertDateFormat(
), model.insurance[index]
Expanded( .cardValidTo,
child: Column( ),
children: <Widget>[ fontSize: 18.5),
model.insurance[index].isActive == true
? Texts(
TranslationBase.of(context)
.activeInsurence,
color: Colors.green,
fontWeight: FontWeight.w900,
fontSize: 17.9)
: Texts(
TranslationBase.of(context)
.notActive,
color: Colors.red,
fontWeight: FontWeight.w900,
fontSize: 17.9)
],
),
),
], ],
), ),
Texts( Row(
TranslationBase.of(context) mainAxisAlignment:
.patientCard +": "+ MainAxisAlignment.spaceBetween,
model children: [
.insurance[index].patientCardID, Texts(
fontSize: 18.5, TranslationBase.of(context)
.status +
": ",
fontSize: 18.5),
model.insurance[index].isActive ==
true
? Texts(
TranslationBase.of(context)
.activeInsurence,
color: Colors.green,
fontWeight: FontWeight.w900,
fontSize: 17.9)
: Texts(
TranslationBase.of(context)
.notActive,
color: Colors.red,
fontWeight: FontWeight.w900,
fontSize: 17.9)
],
), ),
Texts( Row(
TranslationBase.of(context) mainAxisAlignment:
.policyNumber +" "+ MainAxisAlignment.spaceBetween,
model.insurance[index] children: [
.insurancePolicyNumber, Texts(
fontSize: 18.5, TranslationBase.of(context)
.patientCard,
fontSize: 18.5),
Texts(
model.insurance[index]
.patientCardID,
fontSize: 18.5)
],
), ),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Texts(
TranslationBase.of(context)
.policyNumber,
fontSize: 18.5,
),
Texts(
model.insurance[index]
.insurancePolicyNumber,
fontSize: 18.5,
)
]),
], ],
), ),
SizedBox( SizedBox(

@ -88,7 +88,9 @@ class _Login extends State<Login> {
Expanded( Expanded(
flex: 2, flex: 2,
child: Texts( child: Texts(
TranslationBase.of(context).enterNationalId, loginType == 1
? TranslationBase.of(context).enterNationalId
: TranslationBase.of(context).enterFile,
fontSize: SizeConfig.textMultiplier * 3.5, fontSize: SizeConfig.textMultiplier * 3.5,
textAlign: TextAlign.start, textAlign: TextAlign.start,
)), )),

@ -45,9 +45,9 @@ defaultTheme({fontName}) {
primaryTextTheme: TextTheme(bodyText2: TextStyle(color: Colors.white)), primaryTextTheme: TextTheme(bodyText2: TextStyle(color: Colors.white)),
iconTheme: IconThemeData(), iconTheme: IconThemeData(),
textTheme: TextTheme( textTheme: TextTheme(
bodyText1: TextStyle(color: Colors.black), bodyText1: TextStyle(color: Colors.black),
headline1: TextStyle(color: Colors.white), headline1: TextStyle(color: Colors.white),
), headline2: TextStyle(color: Colors.white)),
appBarTheme: AppBarTheme( appBarTheme: AppBarTheme(
color: Color(0xff515A5D), color: Color(0xff515A5D),
brightness: Brightness.light, brightness: Brightness.light,
@ -74,9 +74,9 @@ invertThemes({fontName}) {
), ),
hintColor: Colors.grey[400], hintColor: Colors.grey[400],
textTheme: TextTheme( textTheme: TextTheme(
bodyText1: TextStyle(color: Colors.white), bodyText1: TextStyle(color: Colors.white),
headline1: TextStyle(color: Colors.white), headline1: TextStyle(color: Colors.white),
), headline2: TextStyle(color: Colors.white)),
disabledColor: Colors.grey[800], disabledColor: Colors.grey[800],
errorColor: Color.fromRGBO(235, 80, 60, 1.0), errorColor: Color.fromRGBO(235, 80, 60, 1.0),
scaffoldBackgroundColor: Color(0xff000000), // Colors.grey[100], scaffoldBackgroundColor: Color(0xff000000), // Colors.grey[100],
@ -125,6 +125,7 @@ bwThemes({fontName}) {
textTheme: TextTheme( textTheme: TextTheme(
bodyText1: TextStyle(color: Colors.red[900]), bodyText1: TextStyle(color: Colors.red[900]),
headline1: TextStyle(color: Colors.red[900]), headline1: TextStyle(color: Colors.red[900]),
headline2: TextStyle(color: Colors.white),
bodyText2: TextStyle(color: Colors.red[900]), bodyText2: TextStyle(color: Colors.red[900]),
subtitle1: TextStyle(color: Colors.red[900]), subtitle1: TextStyle(color: Colors.red[900]),
), ),

@ -1573,12 +1573,18 @@ class TranslationBase {
String get shippingAddresss => String get shippingAddresss =>
localizedValues["shipping-address"][locale.languageCode]; localizedValues["shipping-address"][locale.languageCode];
String get covidAlert => localizedValues["covid-alert"][locale.languageCode]; String get covidAlert => localizedValues["covid-alert"][locale.languageCode];
String get pharmacyRelogin => localizedValues["pharmacy-relogin"][locale.languageCode]; String get pharmacyRelogin =>
String get onlineCheckInAgreement => localizedValues["onlineCheckInAgreement"][locale.languageCode]; localizedValues["pharmacy-relogin"][locale.languageCode];
String get chiefComplaints => localizedValues["chiefComplaints"][locale.languageCode]; String get onlineCheckInAgreement =>
String get errorChiefComplaints => localizedValues["errorChiefComplaints"][locale.languageCode]; localizedValues["onlineCheckInAgreement"][locale.languageCode];
String get expectedArrivalTime => localizedValues["expectedArrivalTime"][locale.languageCode]; String get chiefComplaints =>
String get errorExpectedArrivalTime => localizedValues["errorExpectedArrivalTimes"][locale.languageCode]; localizedValues["chiefComplaints"][locale.languageCode];
String get errorChiefComplaints =>
localizedValues["errorChiefComplaints"][locale.languageCode];
String get expectedArrivalTime =>
localizedValues["expectedArrivalTime"][locale.languageCode];
String get errorExpectedArrivalTime =>
localizedValues["errorExpectedArrivalTimes"][locale.languageCode];
String get anicllaryOrders => String get anicllaryOrders =>
localizedValues["ancillary-orders"][locale.languageCode]; localizedValues["ancillary-orders"][locale.languageCode];
String get mrn => localizedValues["MRN"][locale.languageCode]; String get mrn => localizedValues["MRN"][locale.languageCode];
@ -1588,6 +1594,7 @@ class TranslationBase {
localizedValues["appointment-no"][locale.languageCode]; localizedValues["appointment-no"][locale.languageCode];
String get insuranceID => String get insuranceID =>
localizedValues["insurance-id"][locale.languageCode]; localizedValues["insurance-id"][locale.languageCode];
String get enterFile => localizedValues["enter-file"][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

@ -36,6 +36,7 @@ import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:url_launcher/url_launcher.dart';
import '../Constants.dart'; import '../Constants.dart';
import 'app_shared_preferences.dart'; import 'app_shared_preferences.dart';
@ -183,10 +184,9 @@ class Utils {
// } // }
} }
static getPhoneNumberWithoutZero(String number){ static getPhoneNumberWithoutZero(String number) {
String newNumber=""; String newNumber = "";
if(number.startsWith('0')) if (number.startsWith('0')) {
{
newNumber = number.substring(1); newNumber = number.substring(1);
} }
return newNumber; return newNumber;
@ -202,7 +202,11 @@ class Utils {
.hasMatch(email); .hasMatch(email);
} }
static List<Widget> myMedicalList({ProjectViewModel projectViewModel, BuildContext context, bool isLogin, count}) { static List<Widget> myMedicalList(
{ProjectViewModel projectViewModel,
BuildContext context,
bool isLogin,
count}) {
List<Widget> medical = List(); List<Widget> medical = List();
if (projectViewModel.havePrivilege(5)) { if (projectViewModel.havePrivilege(5)) {
medical.add(InkWell( medical.add(InkWell(
@ -406,16 +410,16 @@ class Utils {
)); ));
} }
if (projectViewModel.havePrivilege(20)) if (projectViewModel.havePrivilege(20))
medical.add(InkWell( medical.add(InkWell(
onTap: () { onTap: () {
Navigator.push(context, FadePage(page: HomeReportPage())); Navigator.push(context, FadePage(page: HomeReportPage()));
}, },
child: MedicalProfileItem( child: MedicalProfileItem(
title: TranslationBase.of(context).medical, title: TranslationBase.of(context).medical,
imagePath: 'medical_reports_icon.png', imagePath: 'medical_reports_icon.png',
subTitle: TranslationBase.of(context).medicalSubtitle, subTitle: TranslationBase.of(context).medicalSubtitle,
), ),
)); ));
if (projectViewModel.havePrivilege(19)) { if (projectViewModel.havePrivilege(19)) {
medical.add(InkWell( medical.add(InkWell(
@ -477,16 +481,16 @@ class Utils {
)); ));
} }
if (projectViewModel.havePrivilege(30)) if (projectViewModel.havePrivilege(30))
medical.add(InkWell( medical.add(InkWell(
onTap: () { onTap: () {
Navigator.push(context, FadePage(page: SmartWatchInstructions())); Navigator.push(context, FadePage(page: SmartWatchInstructions()));
}, },
child: MedicalProfileItem( child: MedicalProfileItem(
title: TranslationBase.of(context).smartWatches, title: TranslationBase.of(context).smartWatches,
imagePath: 'smartwatch_icon.png', imagePath: 'smartwatch_icon.png',
subTitle: TranslationBase.of(context).smartWatchesSubtitle, subTitle: TranslationBase.of(context).smartWatchesSubtitle,
), ),
)); ));
if (projectViewModel.havePrivilege(28)) { if (projectViewModel.havePrivilege(28)) {
medical.add(InkWell( medical.add(InkWell(
@ -500,25 +504,29 @@ class Utils {
), ),
)); ));
} }
if (projectViewModel.havePrivilege(32) || true) { if (projectViewModel.havePrivilege(32) || true) {
medical.add(InkWell( medical.add(InkWell(
onTap: () { onTap: () {
userData().then((userData_){ userData().then((userData_) {
if (projectViewModel.isLogin && userData_ != null) { if (projectViewModel.isLogin && userData_ != null) {
String patientID = userData_.patientID.toString(); String patientID = userData_.patientID.toString();
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
projectViewModel.platformBridge().connectHMGInternetWifi(patientID).then((value) => {GifLoaderDialogUtils.hideDialog(context)}); projectViewModel
} else { .platformBridge()
AlertDialogBox( .connectHMGInternetWifi(patientID)
context: context, .then((value) => {GifLoaderDialogUtils.hideDialog(context)});
confirmMessage: "Please login with your account first to use this feature", } else {
okText: "OK", AlertDialogBox(
okFunction: () { context: context,
AlertDialogBox.closeAlertDialog(context); confirmMessage:
}).showAlertDialog(context); "Please login with your account first to use this feature",
} okText: "OK",
}); okFunction: () {
}, AlertDialogBox.closeAlertDialog(context);
}).showAlertDialog(context);
}
});
},
child: MedicalProfileItem( child: MedicalProfileItem(
title: TranslationBase.of(context).internet, title: TranslationBase.of(context).internet,
imagePath: 'insurance_card_icon.png', imagePath: 'insurance_card_icon.png',
@ -529,10 +537,9 @@ class Utils {
if (projectViewModel.havePrivilege(40)) { if (projectViewModel.havePrivilege(40)) {
medical.add(InkWell( medical.add(InkWell(
// onTap: () { onTap: () {
// Navigator.push( launch('whatsapp://send?phone=18885521858&text=');
// context, FadePage(page: InsuranceApproval())); },
// },
child: MedicalProfileItem( child: MedicalProfileItem(
title: TranslationBase.of(context).chatbot, title: TranslationBase.of(context).chatbot,
imagePath: 'insurance_approvals_icon.png', imagePath: 'insurance_approvals_icon.png',
@ -546,12 +553,11 @@ class Utils {
} }
Future<AuthenticatedUser> userData() async { Future<AuthenticatedUser> userData() async {
var userData = AuthenticatedUser.fromJson(await AppSharedPreferences().getObject(MAIN_USER)); var userData = AuthenticatedUser.fromJson(
await AppSharedPreferences().getObject(MAIN_USER));
return userData; return userData;
} }
// extension function that use in iterations(list.. etc) to iterate items and get index and item it self // extension function that use in iterations(list.. etc) to iterate items and get index and item it self
extension IndexedIterable<E> on Iterable<E> { extension IndexedIterable<E> on Iterable<E> {
Iterable<T> mapIndexed<T>(T Function(E e, int i) f) { Iterable<T> mapIndexed<T>(T Function(E e, int i) f) {

@ -15,7 +15,7 @@ class ServicesContainer extends StatelessWidget {
height: 60, height: 60,
margin: EdgeInsets.all(8), margin: EdgeInsets.all(8),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).primaryColor, color: Theme.of(context).textTheme.headline2.color,
shape: BoxShape.rectangle, shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(7), borderRadius: BorderRadius.circular(7),
), ),
@ -38,6 +38,7 @@ class ServicesContainer extends StatelessWidget {
Texts( Texts(
title, title,
fontSize: 16, fontSize: 16,
color: Colors.black,
), ),
], ],
), ),

@ -61,394 +61,416 @@ class _AppDrawerState extends State<AppDrawer> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectProvider = Provider.of(context); projectProvider = Provider.of(context);
return SizedBox( return Container(
width: MediaQuery.of(context).size.width * 0.75, width: MediaQuery.of(context).size.width * 0.75,
child: Container( color: Theme.of(context).scaffoldBackgroundColor,
color: Colors.white, child: Container(
child: Drawer( // color: Colors.white,
child: Column( child: Theme(
children: <Widget>[ data: Theme.of(context).copyWith(
Expanded( canvasColor: Theme.of(context).scaffoldBackgroundColor),
flex: 4, child: Drawer(
child: ListView( child: Column(
padding: EdgeInsets.zero, children: <Widget>[
children: <Widget>[ Expanded(
Container( flex: 4,
height: SizeConfig.screenHeight * .30, child: ListView(
child: InkWell( padding: EdgeInsets.zero,
child: DrawerHeader( children: <Widget>[
child: Column( Container(
children: <Widget>[ height: SizeConfig.screenHeight * .30,
Container( child: InkWell(
child: child: DrawerHeader(
Image.asset('assets/images/logo_HMG.png'), child: Column(
margin: EdgeInsets.all( children: <Widget>[
SizeConfig.imageSizeMultiplier * 4), Container(
), child: Image.asset(
(user != null && projectProvider.isLogin) 'assets/images/logo_HMG.png'),
? Padding( margin: EdgeInsets.all(
padding: EdgeInsets.all(15), SizeConfig.imageSizeMultiplier * 4),
child: Column( ),
mainAxisAlignment: (user != null && projectProvider.isLogin)
MainAxisAlignment.start, ? Padding(
children: <Widget>[ padding: EdgeInsets.all(15),
Row( child: Column(
mainAxisAlignment:
MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Padding( Row(
padding: EdgeInsets.only( children: <Widget>[
right: 5), Padding(
child: Icon( padding:
Icons.account_circle, EdgeInsets.only(
right: 5),
child: Icon(
Icons.account_circle,
color:
Color(0xFF40ACC9),
)),
AppText(
user.firstName +
' ' +
user.lastName,
color: Color(0xFF40ACC9), color: Color(0xFF40ACC9),
)
],
),
Row(children: <Widget>[
Padding(
padding: EdgeInsets.only(
left: 30, top: 5),
child: Column(
children: <Widget>[
AppText(
TranslationBase.of(
context)
.fileno +
": " +
user.patientID
.toString(),
color: Color(
0xFF40ACC9),
fontSize: SizeConfig
.textMultiplier *
1.5,
),
AppText(
user.bloodGroup !=
null
? 'Blood Group: ' +
user.bloodGroup
: '',
fontSize: SizeConfig
.textMultiplier *
1.5,
),
],
))
])
]))
: SizedBox(),
],
),
),
),
),
Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
InkWell(
child: DrawerItem(
TranslationBase.of(context).arabicChange,
Icons.translate),
onTap: () {
sharedPref.setBool(IS_ROBOT_INIT, null);
if (projectProvider.isArabic) {
projectProvider.changeLanguage('en');
} else {
projectProvider.changeLanguage('ar');
}
},
),
(user != null && projectProvider.isLogin)
? Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
(user.isFamily == null ||
user.isFamily == false) &&
projectProvider.havePrivilege(2)
? InkWell(
child: DrawerItem(
TranslationBase.of(context)
.family,
Icons.group,
textColor: Theme.of(context)
.textTheme
.bodyText1
.color,
iconColor: Theme.of(context)
.textTheme
.bodyText1
.color,
bottomLine: false,
sideArrow: true,
),
onTap: () {
Navigator.of(context).pushNamed(
MY_FAMILIY,
);
},
)
: SizedBox(),
FutureBuilder(
future: getFamilyFiles(), // async work
builder: (BuildContext context,
AsyncSnapshot<
GetAllSharedRecordsByStatusResponse>
snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Padding(
padding: EdgeInsets.all(10),
child: Text(''));
default:
if (snapshot.hasError)
return Padding(
padding: EdgeInsets.all(10),
child:
Text(snapshot.error));
else
return Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
// <--- left side
color: Colors.grey[200],
width: 1.0,
),
)), )),
AppText( child: Column(
user.firstName + children: [
' ' + user.isFamily == true
user.lastName, ? Container(
color: Color(0xFF40ACC9), padding: EdgeInsets
) .only(
], bottom:
), 5),
Row(children: <Widget>[ child: InkWell(
Padding( onTap: () {
padding: EdgeInsets.only( switchUser(
left: 30, top: 5), mainUser,
child: Column( context);
children: <Widget>[ },
AppText( child: Row(
TranslationBase.of( crossAxisAlignment:
context) CrossAxisAlignment
.fileno + .start,
": " + children: <
user.patientID Widget>[
.toString(), Expanded(
color: child:
Color(0xFF40ACC9), Icon(Icons.person),
fontSize: SizeConfig ),
.textMultiplier * Expanded(
1.5, flex:
7,
child:
Column(crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
AppText(mainUser.firstName + ' ' + mainUser.lastName, color: Theme.of(context).textTheme.bodyText1.color),
AppText(
TranslationBase.of(context).fileno + ": " + mainUser.patientID.toString(),
color: Theme.of(context).textTheme.bodyText1.color,
),
])),
],
)))
: SizedBox(),
Column(
mainAxisAlignment:
MainAxisAlignment
.start,
mainAxisSize:
MainAxisSize
.min,
children: snapshot
.data
.getAllSharedRecordsByStatusList
.map<Widget>(
(result) {
return result
.status ==
3
? Container(
padding: EdgeInsets.only(
bottom:
5),
child: InkWell(
onTap: () {
switchUser(result,
context);
},
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Expanded(
child: Icon(Icons.person, color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Colors.black),
),
Expanded(
flex: 7,
child: Padding(
padding: EdgeInsets.only(left: 5, right: 5),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
AppText(result.patientName, color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Colors.black),
AppText(TranslationBase.of(context).fileno + ": " + result.iD.toString(), color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Colors.black),
]))),
],
)))
: SizedBox();
}).toList())
],
));
}
},
),
InkWell(
child: Stack(
children: [
DrawerItem(
TranslationBase.of(context)
.notification,
Icons.notifications,
count: notificationCount != null
? new Container(
padding:
EdgeInsets.all(4),
margin: EdgeInsets.all(2),
decoration:
new BoxDecoration(
color: Colors.red,
borderRadius:
BorderRadius
.circular(20),
), ),
AppText( constraints:
user.bloodGroup != null BoxConstraints(
? 'Blood Group: ' + minWidth: 20,
user.bloodGroup minHeight: 20,
: '',
fontSize: SizeConfig
.textMultiplier *
1.5,
), ),
], child: new Text(
)) notificationCount,
]) style: new TextStyle(
])) color: Colors.white,
: SizedBox(), fontSize:
], projectProvider
), .isArabic
), ? 8
), : 9,
), ),
Column( textAlign:
mainAxisAlignment: MainAxisAlignment.start, TextAlign.center,
children: <Widget>[ ),
InkWell( // ),
child: DrawerItem( )
TranslationBase.of(context).arabicChange, : SizedBox(),
Icons.translate), ),
onTap: () { ],
sharedPref.setBool(IS_ROBOT_INIT, null); ),
if (projectProvider.isArabic) { onTap: () {
projectProvider.changeLanguage('en'); //NotificationsPage
} else { Navigator.of(context).pop();
projectProvider.changeLanguage('ar'); Navigator.push(
} context,
}, FadePage(
), page: NotificationsPage()));
(user != null && projectProvider.isLogin) },
? Column( ),
mainAxisAlignment: MainAxisAlignment.start, if (projectProvider.havePrivilege(3))
children: <Widget>[ InkWell(
(user.isFamily == null ||
user.isFamily == false) &&
projectProvider.havePrivilege(2)
? InkWell(
child: DrawerItem( child: DrawerItem(
TranslationBase.of(context).family, TranslationBase.of(context)
Icons.group, .appsetting,
textColor: Theme.of(context) Icons.settings_input_composite),
.textTheme
.bodyText1
.color,
iconColor: Theme.of(context)
.textTheme
.bodyText1
.color,
bottomLine: false,
sideArrow: true,
),
onTap: () { onTap: () {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
MY_FAMILIY, SETTINGS,
); );
}, },
)
: SizedBox(),
FutureBuilder(
future: getFamilyFiles(), // async work
builder: (BuildContext context,
AsyncSnapshot<
GetAllSharedRecordsByStatusResponse>
snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Padding(
padding: EdgeInsets.all(10),
child: Text(''));
default:
if (snapshot.hasError)
return Padding(
padding: EdgeInsets.all(10),
child: Text(snapshot.error));
else
return Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
// <--- left side
color: Colors.grey[200],
width: 1.0,
),
)),
child: Column(
children: [
user.isFamily == true
? Container(
padding:
EdgeInsets.only(
bottom: 5),
child: InkWell(
onTap: () {
switchUser(
mainUser,
context);
},
child: Row(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: <
Widget>[
Expanded(
child: Icon(
Icons
.person),
),
Expanded(
flex: 7,
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
AppText(mainUser.firstName + ' ' + mainUser.lastName),
AppText(TranslationBase.of(context).fileno + ": " + mainUser.patientID.toString()),
])),
],
)))
: SizedBox(),
Column(
mainAxisAlignment:
MainAxisAlignment
.start,
mainAxisSize:
MainAxisSize.min,
children: snapshot.data
.getAllSharedRecordsByStatusList
.map<Widget>(
(result) {
return result
.status ==
3
? Container(
padding: EdgeInsets
.only(
bottom:
5),
child: InkWell(
onTap: () {
switchUser(
result,
context);
},
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: <
Widget>[
Expanded(
child:
Icon(Icons.person, color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Colors.black),
),
Expanded(
flex: 7,
child: Padding(
padding: EdgeInsets.only(left: 5, right: 5),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
AppText(result.patientName, color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Colors.black),
AppText(TranslationBase.of(context).fileno + ": " + result.iD.toString(), color: result.responseID == user.patientID ? Color(0xFF40ACC9) : Colors.black),
]))),
],
)))
: SizedBox();
}).toList())
],
));
}
},
),
InkWell(
child: Stack(
children: [
DrawerItem(
TranslationBase.of(context)
.notification,
Icons.notifications,
count: notificationCount != null
? new Container(
padding: EdgeInsets.all(4),
margin: EdgeInsets.all(2),
decoration: new BoxDecoration(
color: Colors.red,
borderRadius:
BorderRadius.circular(
20),
),
constraints: BoxConstraints(
minWidth: 20,
minHeight: 20,
),
child: new Text(
notificationCount,
style: new TextStyle(
color: Colors.white,
fontSize: projectProvider
.isArabic
? 8
: 9,
),
textAlign: TextAlign.center,
),
// ),
)
: SizedBox(),
), ),
], InkWell(
), child: DrawerItem(
onTap: () { TranslationBase.of(context).rateApp,
//NotificationsPage Icons.star),
Navigator.of(context).pop(); onTap: () {
Navigator.push(context, if (Platform.isIOS) {
FadePage(page: NotificationsPage())); launch(
}, "https://apps.apple.com/sa/app/dr-suliaman-alhabib/id733503978");
), } else {
if (projectProvider.havePrivilege(3)) launch(
InkWell( "https://play.google.com/store/apps/details?id=com.ejada.hmg&hl=en");
child: DrawerItem( }
TranslationBase.of(context) },
.appsetting, ),
Icons.settings_input_composite), InkWell(
onTap: () { child: DrawerItem(
Navigator.of(context).pushNamed( TranslationBase.of(context).logout,
SETTINGS, Icons.lock_open),
); onTap: () {
}, logout();
), },
InkWell( )
child: DrawerItem( ],
TranslationBase.of(context).rateApp, )
Icons.star), : InkWell(
onTap: () {
if (Platform.isIOS) {
launch(
"https://apps.apple.com/sa/app/dr-suliaman-alhabib/id733503978");
} else {
launch(
"https://play.google.com/store/apps/details?id=com.ejada.hmg&hl=en");
}
},
),
InkWell(
child: DrawerItem( child: DrawerItem(
TranslationBase.of(context).logout, TranslationBase.of(context)
.loginregister,
Icons.lock_open), Icons.lock_open),
onTap: () { onTap: () {
logout(); login();
}, },
) ),
], // InkWell(
) // child: DrawerItem(
: InkWell( // TranslationBase.of(context).appsetting,
child: DrawerItem( // Icons.settings_input_composite),
TranslationBase.of(context).loginregister, // onTap: () {
Icons.lock_open), // Navigator.of(context).pushNamed(
onTap: () { // SETTINGS,
login(); // );
}, // },
), // )
// InkWell( ],
// child: DrawerItem( ))
// TranslationBase.of(context).appsetting,
// Icons.settings_input_composite),
// onTap: () {
// Navigator.of(context).pushNamed(
// SETTINGS,
// );
// },
// )
], ],
) ),
], ),
), Expanded(
), flex: 1,
Expanded( child: Column(
flex: 1, children: <Widget>[
child: Column( Container(
children: <Widget>[ child: Align(
Container( alignment: FractionalOffset.bottomCenter,
child: Align( child: Container(
alignment: FractionalOffset.bottomCenter, child: Row(
child: Container( mainAxisAlignment:
child: Row( MainAxisAlignment.spaceEvenly,
mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [
children: [ Column(
Column( children: <Widget>[
children: <Widget>[ Text(TranslationBase.of(context)
Text(TranslationBase.of(context).poweredBy), .poweredBy),
Image.asset( Image.asset(
'assets/images/cs_logo_container.png', 'assets/images/cs_logo_container.png',
width: SizeConfig.imageSizeMultiplier * 30, width:
) SizeConfig.imageSizeMultiplier * 30,
], )
), ],
Column( ),
children: <Widget>[ Column(
Image.asset( children: <Widget>[
'assets/images/new-design/vidamobile.png', Image.asset(
width: SizeConfig.imageSizeMultiplier * 25, 'assets/images/new-design/vidamobile.png',
) width:
SizeConfig.imageSizeMultiplier * 25,
)
],
),
], ],
), ),
], ),
), ),
), )
), ],
) ),
], )
), ],
) ),
], ),
), ),
), ));
),
);
} }
drawerNavigator(context, routeName) { drawerNavigator(context, routeName) {

Loading…
Cancel
Save