Health Calculator 4.0

merge-update-with-lab-changes
devmirza121 4 years ago
parent 566de7936a
commit 1d1708bdcc

@ -1635,4 +1635,44 @@ const Map localizedValues = {
"waist": {"en": "Waist", "ar": "وسط"}, "waist": {"en": "Waist", "ar": "وسط"},
"hip": {"en": "Hip", "ar": "ورك او نتوء"}, "hip": {"en": "Hip", "ar": "ورك او نتوء"},
"carbsProtin": {"en": "Carbs, Protein and Fat", "ar": "الكربوهيدرات والبروتينات والدهون"}, "carbsProtin": {"en": "Carbs, Protein and Fat", "ar": "الكربوهيدرات والبروتينات والدهون"},
"usefulInfo": {"en": "Useful Information", "ar": "Useful Information"},
"babyAge": {"en": "Baby Age", "ar": "عمر الطفل الآن:"},
"babyAgeAvail": {"en": "baby age is not available", "ar": "عمر الطفل غير متوفر"},
"deliveryDue": {"en": "The delivery due date is estimated to be on the", "ar": "من المقدر أن يكون تاريخ استحقاق التسليم في"},
"almostInactive": {"en": "Almost Inactive(Little or no exercises)", "ar": "شبه غير نشط (تمارين قليلة أو معدومة)"},
"lightActive1": {"en": "Lighty Active (1-3) days per week", "ar": "Lighty Active (1-3) أيام في الأسبوع"},
"veryActive": {"en": "very Active(6-7) days per week", "ar": "نشط جدا (6-7) أيام في الأسبوع"},
"superActive": {"en": "Super Active(very hard exercises)", "ar": "سوبر نشط (تمارين صعبة للغاية)"},
"dailyIntake": {"en": "Daily intake is", "ar": "المدخول اليومي"},
"calculateAmount": {"en": "Calculates the amount of energy that the persons body expends in a day", "ar": "تحسب كمية الطاقة التي يبذلها جسم الشخص في اليوم"},
"bodyWillBurn": {"en": "This means the body will burn", "ar": "هذا يعني أن الجسم سوف يحترق"},
"caloriesEachDay": {"en": "calories each day, if engaged in no activity for the entire day.. Note: Daily calorie requirement is", "ar": "السعرات الحرارية في كل يوم ، إذا لم تمارس أي نشاط طوال اليوم .. ملاحظة: متطلبات السعرات الحرارية اليومية هي"},
"maintainWeight": {"en": "calories, to maintain the current weight.", "ar": "السعرات الحرارية للحفاظ على الوزن الحالي."},
"mediumFinger": {"en": "Medium(fingers touch)", "ar": "متوسطة (لمسة الأصابع)"},
"smallFinger": {"en": "Small(fingers overlap)", "ar": "صغير (أصابع متداخلة)"},
"largeFinger": {"en": "Large(fingers don\'n touch)", "ar": "كبير (لا تلمس الأصابع)"},
"idealBodyWeight": {"en": "Calculates the ideal body weight based on height, Weight, and Body Size", "ar": "يحسب وزن الجسم المثالي بناءً على الطول والوزن وحجم الجسم"},
"bodyFrameSize": {"en": "Body Frame Size", "ar": "حجم إطار الجسم"},
"idealWeightRange": {"en": "Ideal weight range is", "ar": "نطاق الوزن المثالي هو"},
"currentWeightPerfect": {"en": "Congratulations! The current weight is perfect and considered healthy", "ar": "تهانينا! الوزن الحالي مثالي ويعتبر صحي"},
"littleBitWeightMore": {"en": "This means that the weight is a little bit more than ideal weight by", "ar": "هذا يعني أن الوزن أكثر قليلاً من الوزن المثالي به"},
"consultWithDoctor": {"en": "May wish to consult with the doctor for medical help. Click to view our list of Doctors", "ar": "قد ترغب في استشارة الطبيب للحصول على مساعدة طبية. انقر لعرض قائمة الأطباء لدينا"},
"excessiveObesity": {"en": "Means that you suffer from excessive obesity by", "ar": "يعني أنك تعاني من السمنة المفرطة بها"},
"mayWish": {"en": "May wish to consult with the doctor for medical help. Click to view our list of\n Doctors", "ar": "قد ترغب في استشارة الطبيب للحصول على مساعدة طبية. انقر لعرض قائمة الأطباء \ n الخاصة بنا"},
"essential": {"en": "The category falls under essential", "ar": "الفئة تندرج تحت الأساسية"},
"athlete": {"en": "The category falls under athlete", "ar": "فئة تندرج تحت رياضي"},
"fitness": {"en": "The category falls under fitness", "ar": "الفئة تندرج تحت اللياقة البدنية"},
"acceptable": {"en": "The category falls under acceptable", "ar": "الفئة تندرج تحت مقبول"},
"underObese": {"en": "The category falls under obese", "ar": "تندرج الفئة تحت السمنة"},
"crossedLimits": {"en": "Please check the value you have entered, since the body fat percentage has crosed the limits.", "ar": "يرجى التحقق من القيمة التي أدخلتها ، لأن نسبة الدهون في الجسم تجاوزت الحدود."},
"lowLimits": {"en": "Please check the value you have entered, since the body fat percentage cannot be this low.", "ar": "يرجى التحقق من القيمة التي أدخلتها ، حيث لا يمكن أن تكون نسبة الدهون في الجسم منخفضة."},
"estimates": {"en": "Estimates the total body fat based on\nthe size", "ar": "تقدير إجمالي الدهون في الجسم بناءً على \ n الحجم"},
}; };

@ -49,7 +49,7 @@ class _BmrCalculatorState extends State<BmrCalculator> {
// int height = 0; // int height = 0;
// int weight = 0; // int weight = 0;
double bmrResult = 0; double bmrResult = 0;
String dropdownValue = 'Lighty Active (1-3) days per week'; String dropdownValue = null;
double calories = 0; double calories = 0;
void updateColor(int type) { void updateColor(int type) {
@ -122,14 +122,14 @@ class _BmrCalculatorState extends State<BmrCalculator> {
bmrResult = bmrResult.roundToDouble(); bmrResult = bmrResult.roundToDouble();
} }
void calculateCalories() { void calculateCalories(BuildContext context) {
if (dropdownValue == "Almost Inactive(Little or no exercises)") { if (dropdownValue == TranslationBase.of(context).almostInactive) {
calories = bmrResult * 1.2; calories = bmrResult * 1.2;
} else if (dropdownValue == "Lighty Active (1-3) days per week") { } else if (dropdownValue == TranslationBase.of(context).lightActive1) {
calories = bmrResult * 1.375; calories = bmrResult * 1.375;
} else if (dropdownValue == "very Active(6-7) days per week") { } else if (dropdownValue == TranslationBase.of(context).veryActive) {
calories = bmrResult * 1.55; calories = bmrResult * 1.55;
} else if (dropdownValue == "Super Active(very hard exercises)") { } else if (dropdownValue == TranslationBase.of(context).superActive) {
calories = bmrResult * 1.725; calories = bmrResult * 1.725;
} else if (dropdownValue == "") { } else if (dropdownValue == "") {
calories = bmrResult * 10.725; calories = bmrResult * 10.725;
@ -138,6 +138,7 @@ class _BmrCalculatorState extends State<BmrCalculator> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (dropdownValue == null) dropdownValue = TranslationBase.of(context).lightActive1;
ProjectViewModel projectViewModel = Provider.of(context); ProjectViewModel projectViewModel = Provider.of(context);
_weightPopupList = <PopupMenuItem>[PopupMenuItem(child: Text(TranslationBase.of(context).kg), value: true), PopupMenuItem(child: Text(TranslationBase.of(context).lb), value: false)]; _weightPopupList = <PopupMenuItem>[PopupMenuItem(child: Text(TranslationBase.of(context).kg), value: true), PopupMenuItem(child: Text(TranslationBase.of(context).lb), value: false)];
_heightPopupList = <PopupMenuItem>[PopupMenuItem(child: Text(TranslationBase.of(context).cm), value: true), PopupMenuItem(child: Text(TranslationBase.of(context).ft), value: false)]; _heightPopupList = <PopupMenuItem>[PopupMenuItem(child: Text(TranslationBase.of(context).cm), value: true), PopupMenuItem(child: Text(TranslationBase.of(context).ft), value: false)];
@ -171,7 +172,7 @@ class _BmrCalculatorState extends State<BmrCalculator> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'Calculates the amount of energy that the persons body expends in a day', TranslationBase.of(context).calculateAmount,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@ -372,10 +373,10 @@ class _BmrCalculatorState extends State<BmrCalculator> {
}); });
}, },
items: <String>[ items: <String>[
'Almost Inactive(Little or no exercises)', TranslationBase.of(context).almostInactive,
'Lighty Active (1-3) days per week', TranslationBase.of(context).lightActive1,
'very Active(6-7) days per week', TranslationBase.of(context).veryActive,
'Super Active(very hard exercises)' TranslationBase.of(context).superActive
].map<DropdownMenuItem<String>>((String value) { ].map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>( return DropdownMenuItem<String>(
value: value, value: value,
@ -412,16 +413,16 @@ class _BmrCalculatorState extends State<BmrCalculator> {
onTap: () { onTap: () {
setState(() { setState(() {
calculateBmr(); calculateBmr();
calculateCalories(); calculateCalories(context);
{ {
Navigator.push( Navigator.push(
context, context,
FadePage( FadePage(
page: BmrResultPage( page: BmrResultPage(
bmrResult: bmrResult, bmrResult: bmrResult,
calories: calories, calories: calories,
)), )),
); );
} }
}); });
@ -661,5 +662,3 @@ class CommonDropDownView extends StatelessWidget {
); );
} }
} }

@ -37,7 +37,7 @@ class BmrResultPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
"Calories", TranslationBase.of(context).calories,
style: TextStyle( style: TextStyle(
fontSize: 19, fontSize: 19,
letterSpacing: -1.34, letterSpacing: -1.34,
@ -65,7 +65,7 @@ class BmrResultPage extends StatelessWidget {
height: 5.0, height: 5.0,
), ),
Text( Text(
'Calories', TranslationBase.of(context).calories,
style: TextStyle( style: TextStyle(
fontSize: 18, fontSize: 18,
letterSpacing: -1.08, letterSpacing: -1.08,
@ -80,7 +80,7 @@ class BmrResultPage extends StatelessWidget {
), ),
mHeight(20), mHeight(20),
Text( Text(
'This means the body will burn ( ${bmrResult.toStringAsFixed(1)} ) calories each day, if engaged in no activity for the entire day.. Note: Daily calorie requirement is ( ${calories.toStringAsFixed(1)} ) calories, to maintain the current weight.', TranslationBase.of(context).bodyWillBurn+' ( ${bmrResult.toStringAsFixed(1)} )'+TranslationBase.of(context).caloriesEachDay+'( ${calories.toStringAsFixed(1)} ) '+TranslationBase.of(context).maintainWeight,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
letterSpacing: -0.56, letterSpacing: -0.56,

@ -180,22 +180,22 @@ class _BodyFatState extends State<BodyFat> {
} }
} }
void showTextResult() { void showTextResult(BuildContext context) {
if (isMale == false) { if (isMale == false) {
if (bodyFat > 9 && bodyFat <= 13) { if (bodyFat > 9 && bodyFat <= 13) {
textResult = 'The category falls under essential'; textResult = TranslationBase.of(context).essential;
} else if (bodyFat > 13 && bodyFat <= 20) { } else if (bodyFat > 13 && bodyFat <= 20) {
textResult = 'The category falls under athlete'; textResult = TranslationBase.of(context).athlete;
} else if (bodyFat > 20 && bodyFat <= 24) { } else if (bodyFat > 20 && bodyFat <= 24) {
textResult = 'The category falls under fitness'; textResult =TranslationBase.of(context).fitness;
} else if (bodyFat > 24 && bodyFat <= 31) { } else if (bodyFat > 24 && bodyFat <= 31) {
textResult = 'The category falls under acceptable'; textResult =TranslationBase.of(context).acceptable;
} else if (bodyFat > 31 && bodyFat <= 60) { } else if (bodyFat > 31 && bodyFat <= 60) {
textResult = 'The category falls under obese'; textResult =TranslationBase.of(context).underObese;
} else if (bodyFat > 60) { } else if (bodyFat > 60) {
textResult = 'Please check the value you have entered, since the body fat percentage has crosed the limits.'; textResult =TranslationBase.of(context).crossedLimits;
} else if (bodyFat <= 9) { } else if (bodyFat <= 9) {
textResult = 'Please check the value you have entered, since the body fat percentage cannot be this low.'; textResult =TranslationBase.of(context).lowLimits;
} }
} else { } else {
if (bodyFat > 5 && fat <= 13) { if (bodyFat > 5 && fat <= 13) {
@ -464,7 +464,7 @@ class _BodyFatState extends State<BodyFat> {
onTap: () { onTap: () {
setState(() { setState(() {
calculateBodyFat(); calculateBodyFat();
showTextResult(); showTextResult(context);
{ {
Navigator.push( Navigator.push(

@ -305,10 +305,10 @@ class _CalorieCalculatorState extends State<CalorieCalculator> {
}); });
}, },
items: <String>[ items: <String>[
'Almost Inactive(Little or no exercises)', TranslationBase.of(context).almostInactive,
'Lighty Active (1-3) days per week', TranslationBase.of(context).lightActive,
'very Active(6-7) days per week', TranslationBase.of(context).lightActive1,
'Super Active(very hard exercises)' TranslationBase.of(context).superActive,
].map<DropdownMenuItem<String>>((String value) { ].map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>( return DropdownMenuItem<String>(
value: value, value: value,

@ -37,7 +37,7 @@ class CalorieResultPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
"Calories", TranslationBase.of(context).calories,
style: TextStyle( style: TextStyle(
fontSize: 19, fontSize: 19,
letterSpacing: -1.34, letterSpacing: -1.34,
@ -65,7 +65,7 @@ class CalorieResultPage extends StatelessWidget {
height: 5.0, height: 5.0,
), ),
Text( Text(
'Calories', TranslationBase.of(context).calories,
style: TextStyle( style: TextStyle(
fontSize: 18, fontSize: 18,
letterSpacing: -1.08, letterSpacing: -1.08,
@ -80,7 +80,7 @@ class CalorieResultPage extends StatelessWidget {
), ),
mHeight(20), mHeight(20),
Text( Text(
'Daily intake is ${calorie.toStringAsFixed(1)} calories', TranslationBase.of(context).dailyIntake+' ${calorie.toStringAsFixed(1)} '+TranslationBase.of(context).calories,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
letterSpacing: -0.56, letterSpacing: -0.56,

@ -1,6 +1,8 @@
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -44,103 +46,114 @@ class _DeliveryDueState extends State<DeliveryDue> {
showNewAppBarTitle: true, showNewAppBarTitle: true,
isShowDecPage: false, isShowDecPage: false,
appBarTitle: TranslationBase.of(context).pregnancyTitle, appBarTitle: TranslationBase.of(context).pregnancyTitle,
body: Padding( body: Column(
padding: EdgeInsets.symmetric(horizontal: 35.0, vertical: 20.0), children: [
child: SingleChildScrollView( Expanded(
child: Container( child: SingleChildScrollView(
child: Column( child: Container(
children: [ padding: EdgeInsets.symmetric(horizontal: 21.0, vertical: 21.0),
Texts( child: Column(
TranslationBase.of(context).pregnancyDesc,
),
Divider(
//height: 2,
thickness: 2,
),
Column(
children: [ children: [
Texts( Text(
TranslationBase.of(context).pregnancyDateLabel, TranslationBase.of(context).pregnancyDesc,
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
),
), ),
InkWell( Divider(
onTap: () { //height: 2,
DatePicker.showDatePicker( thickness: 1,
context, ),
showTitleActions: true, Column(
minTime: DateTime(DateTime.now().year - 1, 1, 1), children: [
maxTime: DateTime.now(), Text(
onConfirm: (date) { TranslationBase.of(context).pregnancyDateLabel,
print('confirm $date'); style: TextStyle(
setState(() { fontSize: 14,
bloodSugarDate = date; fontWeight: FontWeight.w600,
dateFrom = date.add(Duration(days: 10)); ),
),
InkWell(
onTap: () {
DatePicker.showDatePicker(
context,
showTitleActions: true,
minTime: DateTime(DateTime.now().year - 1, 1, 1),
maxTime: DateTime.now(),
onConfirm: (date) {
print('confirm $date');
setState(() {
bloodSugarDate = date;
dateFrom = date.add(Duration(days: 10));
dateTo = date.add(Duration(days: 20)); dateTo = date.add(Duration(days: 20));
conceivedDate = date.add(Duration(days: 14)); conceivedDate = date.add(Duration(days: 14));
deliveryDue = date.add(Duration(days: 280)); deliveryDue = date.add(Duration(days: 280));
firstTrimester = date.add(Duration(days: 85)); firstTrimester = date.add(Duration(days: 85));
secondTrimester = date.add(Duration(days: 190)); secondTrimester = date.add(Duration(days: 190));
thirdTrimester = date.add(Duration(days: 280)); thirdTrimester = date.add(Duration(days: 280));
}); });
},
currentTime: DateTime.now(),
);
}, },
currentTime: DateTime.now(), child: Container(
); padding: EdgeInsets.all(12),
}, margin: EdgeInsets.only(top: 15.0),
child: Container( width: double.infinity,
padding: EdgeInsets.all(12), height: 65,
margin: EdgeInsets.only(top: 15.0), decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
width: double.infinity, child: Row(
height: 65, mainAxisAlignment: MainAxisAlignment.spaceBetween,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [ children: [
Icon(Icons.date_range), Row(
Texts(TranslationBase.of(context).date), children: [
Icon(Icons.date_range),
Texts(TranslationBase.of(context).date),
],
),
Texts(getDate()),
], ],
), ),
Texts(getDate()), ),
],
), ),
), ],
), ),
], ],
), ),
SizedBox( ),
height: 280.0, ),
), ),
Container( Container(
height: 50.0, margin: EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0),
width: 350.0, color: Colors.white,
child: DefaultButton( child: SecondaryButton(
TranslationBase.of(context).calculate, label: TranslationBase.of(context).calculate,
() { color: CustomColors.accentColor,
setState(() { onTap: () {
{ setState(() {
Navigator.push( {
context, Navigator.push(
FadePage( context,
page: DeliveryDueResult( FadePage(
conceivedDate: conceivedDate, page: DeliveryDueResult(
dateFrom: dateFrom, conceivedDate: conceivedDate,
dateTo: dateTo, dateFrom: dateFrom,
deliveryDue: deliveryDue, dateTo: dateTo,
firstTrimester: firstTrimester, deliveryDue: deliveryDue,
secondTrimester: secondTrimester, firstTrimester: firstTrimester,
thirdTrimester: thirdTrimester, secondTrimester: secondTrimester,
)), thirdTrimester: thirdTrimester,
); )),
} );
}); }
}, });
), },
),
],
), ),
), ),
), ],
), ),
); );
} }

@ -1,9 +1,12 @@
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/health-calculator/bariatrics-service.dart'; import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/health-calculator/bariatrics-service.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -29,78 +32,102 @@ class DeliveryDueResult extends StatelessWidget {
showNewAppBarTitle: true, showNewAppBarTitle: true,
isShowDecPage: false, isShowDecPage: false,
appBarTitle: TranslationBase.of(context).pregnancyTitle, appBarTitle: TranslationBase.of(context).pregnancyTitle,
body: Padding( body: Column(
padding: EdgeInsets.symmetric(horizontal: 30.0, vertical: 12.0), children: [
child: SingleChildScrollView( Expanded(
child: Container( child: SingleChildScrollView(
height: 750.0, child: Container(
child: Column( padding: EdgeInsets.symmetric(horizontal: 21.0, vertical: 21.0),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.start,
children: [ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
Texts( children: [
TranslationBase.of(context).ovulationPeriod, Text(
fontWeight: FontWeight.w400, TranslationBase.of(context).pregnancyTitle,
), style: TextStyle(
Texts( fontSize: 19,
TranslationBase.of(context).from, letterSpacing: -1.14,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w600,
), ),
Texts(DateFormat.yMMMEd().format(dateFrom), fontWeight: FontWeight.w800, fontSize: 21.0, color: Color(0xffC5272D)), ),
Texts( Text(
TranslationBase.of(context).to, TranslationBase.of(context).ovulationPeriod,
fontWeight: FontWeight.w400, style: TextStyle(
), fontSize: 14,
Texts(DateFormat.yMMMEd().format(dateTo), fontWeight: FontWeight.w800, fontSize: 21.0, color: Color(0xffC5272D)), letterSpacing: -0.56,
Texts( fontWeight: FontWeight.w600,
TranslationBase.of(context).conceive, color: CustomColors.textColor,
fontWeight: FontWeight.w400, ),
), ),
Texts( mHeight(20),
DateFormat.yMMMEd().format(conceivedDate), showItem(TranslationBase.of(context).from, DateFormat.yMMMEd().format(dateFrom), titleColor: CustomColors.accentColor),
fontWeight: FontWeight.w800, mHeight(12),
fontSize: 21.0, showItem(TranslationBase.of(context).to, DateFormat.yMMMEd().format(dateTo), titleColor: CustomColors.accentColor),
), mHeight(12),
Texts( mDivider(CustomColors.devider),
TranslationBase.of(context).firstTri, mHeight(12),
fontWeight: FontWeight.w400, showItem(TranslationBase.of(context).conceive, DateFormat.yMMMEd().format(conceivedDate)),
), mHeight(12),
Texts( mDivider(CustomColors.devider),
DateFormat.yMMMEd().format(firstTrimester), mHeight(12),
fontWeight: FontWeight.w800, showItem(TranslationBase.of(context).firstTri, DateFormat.yMMMEd().format(firstTrimester)),
fontSize: 21.0, mHeight(12),
), mDivider(CustomColors.devider),
Texts( mHeight(12),
TranslationBase.of(context).secondTri, showItem(TranslationBase.of(context).secondTri, DateFormat.yMMMEd().format(secondTrimester)),
fontWeight: FontWeight.w400, mHeight(12),
), mDivider(CustomColors.devider),
Texts( mHeight(12),
DateFormat.yMMMEd().format(secondTrimester), showItem(TranslationBase.of(context).thirdTri, DateFormat.yMMMEd().format(thirdTrimester)),
fontWeight: FontWeight.w800, mHeight(12),
fontSize: 21.0, mDivider(CustomColors.devider),
), mHeight(12),
Texts( ],
TranslationBase.of(context).thirdTri, ).withBorderedContainer,
fontWeight: FontWeight.w400, ),
),
Texts(
DateFormat.yMMMEd().format(thirdTrimester),
fontWeight: FontWeight.w800,
fontSize: 21.0,
),
Container(
width: 350,
child: DefaultButton(
TranslationBase.of(context).seeDoctorsList,
() {
getDoctorsList(context);
},
),
),
],
), ),
), ),
), Container(
margin: EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0),
color: Colors.white,
child: SecondaryButton(
label: TranslationBase.of(context).seeDoctorsList,
color: CustomColors.accentColor,
onTap: () {
getDoctorsList(context);
},
),
),
],
),
);
}
Widget showItem(String title, String value, {Color titleColor}) {
return Container(
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: TextStyle(
fontSize: 14,
letterSpacing: -0.56,
color: titleColor ?? Colors.black,
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w600,
),
),
Text(
value,
style: TextStyle(
fontSize: 18,
letterSpacing: -1.08,
fontWeight: FontWeight.w600,
),
),
],
), ),
); );
} }
@ -145,20 +172,11 @@ class DeliveryDueResult extends StatelessWidget {
if (doctorByHospital.length != 0) { if (doctorByHospital.length != 0) {
_patientDoctorAppointmentListHospital[_patientDoctorAppointmentListHospital.indexOf(doctorByHospital[0])].patientDoctorAppointmentList.add(element); _patientDoctorAppointmentListHospital[_patientDoctorAppointmentListHospital.indexOf(doctorByHospital[0])].patientDoctorAppointmentList.add(element);
} else { } else {
_patientDoctorAppointmentListHospital _patientDoctorAppointmentListHospital.add(PatientDoctorAppointmentList(filterName: element.projectName, distanceInKMs: "0", patientDoctorAppointment: element));
.add(PatientDoctorAppointmentList(filterName: element.projectName, distanceInKMs: "0", patientDoctorAppointment: element));
} }
}); });
Navigator.push( Navigator.push(context, FadePage(page: SearchResults(isLiveCareAppointment: false, doctorsList: doctorsList, patientDoctorAppointmentListHospital: _patientDoctorAppointmentListHospital)));
context,
FadePage(
page: SearchResults(
isLiveCareAppointment: false,
doctorsList: doctorsList,
patientDoctorAppointmentListHospital:
_patientDoctorAppointmentListHospital)));
} }
} }
}).catchError((err) { }).catchError((err) {
@ -167,3 +185,19 @@ class DeliveryDueResult extends StatelessWidget {
}); });
} }
} }
extension BorderedContainer on Widget {
Widget get withBorderedContainer => Container(
padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
),
),
child: this,
);
}

@ -34,7 +34,7 @@ class _IdealBodyState extends State<IdealBody> {
double overWeightBy; double overWeightBy;
int weight = 0; int weight = 0;
double idealWeight = 0; double idealWeight = 0;
String dropdownValue = 'Medium(fingers touch)'; String dropdownValue = null;
double calories = 0; double calories = 0;
String textResult = ''; String textResult = '';
double maxIdealWeight; double maxIdealWeight;
@ -58,11 +58,11 @@ class _IdealBodyState extends State<IdealBody> {
heightInches = int.parse(_heightController.text) * .39370078740157477; heightInches = int.parse(_heightController.text) * .39370078740157477;
heightFeet = heightInches / 12; heightFeet = heightInches / 12;
idealWeight = (50 + 2.3 * (heightInches - 60)); idealWeight = (50 + 2.3 * (heightInches - 60));
if (dropdownValue == 'Small(fingers overlap)') { if (dropdownValue == TranslationBase.of(context).smallFinger) {
idealWeight = idealWeight - 10; idealWeight = idealWeight - 10;
} else if (dropdownValue == 'Medium(fingers touch)') { } else if (dropdownValue == TranslationBase.of(context).mediumFinger) {
idealWeight = idealWeight; idealWeight = idealWeight;
} else if (dropdownValue == 'Large(fingers don\'n touch)') { } else if (dropdownValue == TranslationBase.of(context).largeFinger) {
idealWeight = idealWeight + 10; idealWeight = idealWeight + 10;
} }
@ -75,6 +75,8 @@ class _IdealBodyState extends State<IdealBody> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if(dropdownValue==null)
dropdownValue=TranslationBase.of(context).mediumFinger;
_weightPopupList = <PopupMenuItem>[PopupMenuItem(child: Text(TranslationBase.of(context).kg), value: true), PopupMenuItem(child: Text(TranslationBase.of(context).lb), value: false)]; _weightPopupList = <PopupMenuItem>[PopupMenuItem(child: Text(TranslationBase.of(context).kg), value: true), PopupMenuItem(child: Text(TranslationBase.of(context).lb), value: false)];
_heightPopupList = <PopupMenuItem>[PopupMenuItem(child: Text(TranslationBase.of(context).cm), value: true), PopupMenuItem(child: Text(TranslationBase.of(context).ft), value: false)]; _heightPopupList = <PopupMenuItem>[PopupMenuItem(child: Text(TranslationBase.of(context).cm), value: true), PopupMenuItem(child: Text(TranslationBase.of(context).ft), value: false)];
@ -103,7 +105,7 @@ class _IdealBodyState extends State<IdealBody> {
child: Column( child: Column(
children: [ children: [
Text( Text(
'Calculates the ideal body weight based on height, Weight, and Body Size', TranslationBase.of(context).idealBodyWeight,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@ -186,7 +188,7 @@ class _IdealBodyState extends State<IdealBody> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
"Body Frame Size", TranslationBase.of(context).bodyFrameSize,
style: TextStyle( style: TextStyle(
fontSize: 11, fontSize: 11,
letterSpacing: -0.44, letterSpacing: -0.44,
@ -213,9 +215,9 @@ class _IdealBodyState extends State<IdealBody> {
}); });
}, },
items: <String>[ items: <String>[
'Small(fingers overlap)', TranslationBase.of(context).smallFinger,
'Medium(fingers touch)', TranslationBase.of(context).mediumFinger,
'Large(fingers don\'n touch)', TranslationBase.of(context).largeFinger,
].map<DropdownMenuItem<String>>((String value) { ].map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>( return DropdownMenuItem<String>(
value: value, value: value,

@ -40,7 +40,7 @@ class IdealBodyResult extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'Ideal weight range is', TranslationBase.of(context).idealWeightRange,
style: TextStyle( style: TextStyle(
fontSize: 19, fontSize: 19,
letterSpacing: -1.34, letterSpacing: -1.34,
@ -60,7 +60,7 @@ class IdealBodyResult extends StatelessWidget {
Padding( Padding(
padding: EdgeInsets.only(top: 8.0, left: 4.0), padding: EdgeInsets.only(top: 8.0, left: 4.0),
child: Text( child: Text(
'Kg', " "+TranslationBase.of(context).kg+" ",
style: TextStyle(color: Colors.red), style: TextStyle(color: Colors.red),
), ),
), ),
@ -80,7 +80,7 @@ class IdealBodyResult extends StatelessWidget {
Padding( Padding(
padding: EdgeInsets.only(top: 8.0, left: 4.0), padding: EdgeInsets.only(top: 8.0, left: 4.0),
child: Text( child: Text(
'Kg', " "+TranslationBase.of(context).kg+" ",
style: TextStyle(color: Colors.red), style: TextStyle(color: Colors.red),
), ),
), ),
@ -93,7 +93,7 @@ class IdealBodyResult extends StatelessWidget {
? Column( ? Column(
children: [ children: [
Texts( Texts(
'Congratulations! The current weight is perfect and considered healthy', TranslationBase.of(context).currentWeightPerfect,
fontSize: 20.0, fontSize: 20.0,
), ),
], ],
@ -101,9 +101,9 @@ class IdealBodyResult extends StatelessWidget {
: overWeightBy > 10 && overWeightBy < 17 : overWeightBy > 10 && overWeightBy < 17
? Column( ? Column(
children: [ children: [
Texts('This means that the weight is a little bit more than ideal weight by'), Texts(TranslationBase.of(context).littleBitWeightMore),
Texts(overWeightBy.toStringAsFixed(1)), Texts(overWeightBy.toStringAsFixed(1)),
Texts('May wish to consult with the doctor for medical help. Click to view our list of Doctors'), Texts(TranslationBase.of(context).consultWithDoctor),
], ],
) )
: overWeightBy >= 18 : overWeightBy >= 18
@ -112,7 +112,7 @@ class IdealBodyResult extends StatelessWidget {
child: Column( child: Column(
children: [ children: [
Texts( Texts(
'Means that you suffer from excessive obesity by', TranslationBase.of(context).excessiveObesity,
), ),
SizedBox( SizedBox(
height: 12.0, height: 12.0,
@ -128,7 +128,7 @@ class IdealBodyResult extends StatelessWidget {
SizedBox( SizedBox(
height: 12.0, height: 12.0,
), ),
Texts('May wish to consult with the doctor for medical help. Click to view our list of\n Doctors'), Texts(TranslationBase.of(context).mayWish),
], ],
), ),
) )
@ -139,7 +139,7 @@ class IdealBodyResult extends StatelessWidget {
Padding( Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Texts( child: Texts(
'Under Weight', TranslationBase.of(context).underWeight,
fontSize: 18.0, fontSize: 18.0,
), ),
), ),
@ -161,7 +161,7 @@ class IdealBodyResult extends StatelessWidget {
child: Column( child: Column(
children: [ children: [
Text( Text(
'under wheight', TranslationBase.of(context).underWeight,
style: TextStyle( style: TextStyle(
fontSize: 17, fontSize: 17,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -182,7 +182,7 @@ class IdealBodyResult extends StatelessWidget {
SizedBox( SizedBox(
height: 12.0, height: 12.0,
), ),
Texts('May wish to consult with the doctor for medical help. Click to view our list of Doctors'), Texts(TranslationBase.of(context).mayWish),
], ],
), ),
), ),

@ -1,6 +1,8 @@
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -20,8 +22,9 @@ class _OvulationPeriodState extends State<OvulationPeriod> {
DateTime bloodSugarDate = DateTime.now(); DateTime bloodSugarDate = DateTime.now();
DateTime timeSugarDate = DateTime.now(); DateTime timeSugarDate = DateTime.now();
DateTime selectedDateTime = DateTime.now(); DateTime selectedDateTime = DateTime.now();
int cycleLength = 0;
int lutealPhaseLength = 0; // int cycleLength = 0;
// int lutealPhaseLength = 0;
String selectedDate; String selectedDate;
var dateFrom = DateTime.now(); var dateFrom = DateTime.now();
var babyAgeWeeks; var babyAgeWeeks;
@ -33,6 +36,9 @@ class _OvulationPeriodState extends State<OvulationPeriod> {
var newFormat = DateFormat("yy-MM-dd"); var newFormat = DateFormat("yy-MM-dd");
String updatedDt; String updatedDt;
TextEditingController cycleLengthController = new TextEditingController();
TextEditingController lutelLengthController = new TextEditingController();
String getTime() { String getTime() {
return " ${timeSugarDate.hour}:${timeSugarDate.minute}"; return " ${timeSugarDate.hour}:${timeSugarDate.minute}";
} }
@ -64,286 +70,176 @@ class _OvulationPeriodState extends State<OvulationPeriod> {
showNewAppBarTitle: true, showNewAppBarTitle: true,
isShowDecPage: false, isShowDecPage: false,
appBarTitle: TranslationBase.of(context).ovulation, appBarTitle: TranslationBase.of(context).ovulation,
body: Padding( body: Column(
padding: EdgeInsets.symmetric(horizontal: 25.0, vertical: 15.0), children: [
child: SingleChildScrollView( Expanded(
child: Container( child: SingleChildScrollView(
height: 700.0, child: Container(
child: Column( padding: EdgeInsets.all(21),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Texts(TranslationBase.of(context).ovulationDesc),
SizedBox(
height: 12.0,
),
Divider(
//height: 2,
thickness: 2,
),
SizedBox(
height: 12.0,
),
InkWell(
onTap: () {
DatePicker.showDatePicker(
context,
showTitleActions: true,
minTime: DateTime(DateTime.now().year - 1, 1, 1),
maxTime: DateTime.now(),
onConfirm: (date) {
print('confirm $date');
setState(() {
selectedDateTime = date;
});
},
currentTime: DateTime.now(),
);
},
child: Container(
padding: EdgeInsets.all(12),
width: double.infinity,
height: 65,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Texts(TranslationBase.of(context).date),
Texts(getDate()),
],
),
),
),
SizedBox(
height: 5.0,
),
Texts(
TranslationBase.of(context).cycleLabel,
fontWeight: FontWeight.w400,
),
SizedBox(
height: 5.0,
),
Row(
children: [ children: [
Container( Text(
width: 340.0, TranslationBase.of(context).ovulationDesc,
height: 60.0, style: TextStyle(
decoration: BoxDecoration( fontSize: 14,
color: Colors.white, letterSpacing: -0.54,
color: Colors.black,
fontWeight: FontWeight.w600,
), ),
child: Row( ),
children: [ SizedBox(
Padding( height: 12.0,
padding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 8.0), ),
child: Center( InkWell(
child: Container( onTap: () {
width: 60.0, DatePicker.showDatePicker(
foregroundDecoration: BoxDecoration( context,
borderRadius: BorderRadius.circular(5.0), showTitleActions: true,
border: Border.all( minTime: DateTime(DateTime.now().year - 1, 1, 1),
color: Colors.blueGrey, maxTime: DateTime.now(),
width: 2.0, onConfirm: (date) {
), print('confirm $date');
), setState(() {
child: Row( selectedDateTime = date;
children: <Widget>[ });
Expanded( },
child: Center( currentTime: DateTime.now(),
child: Text(cycleLength.toString()), );
), },
), child: Container(
Container( padding: EdgeInsets.all(12),
height: 38.0, width: double.infinity,
child: Column( height: 65,
crossAxisAlignment: CrossAxisAlignment.center, decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: Colors.white),
mainAxisAlignment: MainAxisAlignment.center, child: Row(
children: <Widget>[ mainAxisAlignment: MainAxisAlignment.spaceBetween,
Container( children: [
decoration: BoxDecoration( Texts(TranslationBase.of(context).date),
border: Border( Texts(getDate()),
bottom: BorderSide( ],
width: 0.5, ),
),
),
),
child: InkWell(
child: Icon(
Icons.arrow_drop_up,
size: 18.0,
),
onTap: () {
setState(() {
if (cycleLength < 45) cycleLength++;
});
},
),
),
InkWell(
child: Icon(
Icons.arrow_drop_down,
size: 18.0,
),
onTap: () {
setState(() {
if (cycleLength > 0) cycleLength--;
});
},
),
],
),
),
],
),
),
),
),
Expanded(
child: Slider(
value: cycleLength.toDouble(),
min: 0,
max: 45,
onChanged: (double newValue) {
setState(() {
cycleLength = newValue.round();
});
},
activeColor: Color(0xffC5272D),
inactiveColor: Color(0xffF3C5C6),
),
),
],
), ),
), ),
SizedBox(
height: 12.0,
),
inputWidget(TranslationBase.of(context).cycleLabel, "0", cycleLengthController),
SizedBox(
height: 12.0,
),
inputWidget(TranslationBase.of(context).lutealLabel, "0", lutelLengthController),
], ],
), ),
Texts( ),
TranslationBase.of(context).lutealLabel, ),
fontWeight: FontWeight.w400, ),
), Container(
SizedBox( margin: EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0),
height: 5.0, color: Colors.white,
), child: SecondaryButton(
Row( label: TranslationBase.of(context).calculate,
children: [ color: CustomColors.accentColor,
Container( onTap: () {
width: 340.0, calculateBabyInformation();
height: 60.0, Navigator.push(
decoration: BoxDecoration( context,
color: Colors.white, FadePage(
page: OvulationResult(
conceivedDate: conceivedDate,
dateFrom: dateFrom,
dateTo: dateTo,
deliveryDue: deliveryDue,
babyAge: babyAgeWeeks,
babyAgeDays: babyAgeDays,
),
),
);
},
),
),
],
),
);
}
Widget inputWidget(String _labelText, String _hintText, TextEditingController _controller, {String prefix, bool isEnable = true, bool hasSelection = false}) {
return Container(
padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
),
),
child: InkWell(
onTap: hasSelection ? () {} : null,
child: Row(
children: [
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
_labelText,
style: TextStyle(
fontSize: 11,
fontWeight: FontWeight.w600,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
),
TextField(
enabled: isEnable,
scrollPadding: EdgeInsets.zero,
keyboardType: TextInputType.number,
controller: _controller,
onChanged: (value) => {},
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff2B353E),
letterSpacing: -0.44,
),
decoration: InputDecoration(
isDense: true,
hintText: _hintText,
hintStyle: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w400,
color: Color(0xff575757),
letterSpacing: -0.56,
), ),
child: Row( prefixIconConstraints: BoxConstraints(minWidth: 50),
children: [ prefixIcon: prefix == null
Padding( ? null
padding: EdgeInsets.symmetric(vertical: 10.0, horizontal: 8.0), : Text(
child: Center( "+" + prefix,
child: Container( style: TextStyle(
width: 60.0, fontSize: 14,
foregroundDecoration: BoxDecoration( height: 21 / 14,
borderRadius: BorderRadius.circular(5.0), fontWeight: FontWeight.w500,
border: Border.all( color: Color(0xff2E303A),
color: Colors.blueGrey, letterSpacing: -0.56,
width: 2.0,
),
),
child: Row(
children: <Widget>[
Expanded(
child: Center(
child: Text(lutealPhaseLength.toString()),
),
),
Container(
height: 38.0,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: 0.5,
),
),
),
child: InkWell(
child: Icon(
Icons.arrow_drop_up,
size: 18.0,
),
onTap: () {
setState(() {
if (lutealPhaseLength < 15) lutealPhaseLength++;
});
},
),
),
InkWell(
child: Icon(
Icons.arrow_drop_down,
size: 18.0,
),
onTap: () {
setState(() {
if (lutealPhaseLength > 0) lutealPhaseLength--;
});
},
),
],
),
),
],
),
), ),
), ),
), contentPadding: EdgeInsets.zero,
Expanded( border: InputBorder.none,
child: Slider( focusedBorder: InputBorder.none,
value: lutealPhaseLength.toDouble(), enabledBorder: InputBorder.none,
min: 0,
max: 15,
onChanged: (double newValue) {
setState(() {
lutealPhaseLength = newValue.round();
});
},
activeColor: Color(0xffC5272D),
inactiveColor: Color(0xffF3C5C6),
),
),
],
),
), ),
],
),
SizedBox(
height: 220.0,
),
Container(
height: 50.0,
width: 350.0,
child: DefaultButton(
TranslationBase.of(context).calculate,
() {
calculateBabyInformation();
Navigator.push(
context,
FadePage(
page: OvulationResult(
conceivedDate: conceivedDate,
dateFrom: dateFrom,
dateTo: dateTo,
deliveryDue: deliveryDue,
babyAge: babyAgeWeeks,
babyAgeDays: babyAgeDays,
)),
);
},
), ),
), ],
], ),
), ),
), if (hasSelection) Icon(Icons.keyboard_arrow_down_outlined),
],
), ),
), ),
); );

@ -1,9 +1,12 @@
import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/health-calculator/bariatrics-service.dart'; import 'package:diplomaticquarterapp/core/service/AlHabibMedicalService/health-calculator/bariatrics-service.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/SearchResults.dart';
import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
@ -26,6 +29,7 @@ class OvulationResult extends StatelessWidget {
this.babyAge, this.babyAge,
this.babyAgeDays, this.babyAgeDays,
}); });
//var newFormat = DateFormat("yy-MM-dd"); //var newFormat = DateFormat("yy-MM-dd");
@override @override
@ -35,81 +39,105 @@ class OvulationResult extends StatelessWidget {
showNewAppBarTitle: true, showNewAppBarTitle: true,
isShowDecPage: false, isShowDecPage: false,
appBarTitle: TranslationBase.of(context).ovulation, appBarTitle: TranslationBase.of(context).ovulation,
body: Padding( body: Column(
padding: EdgeInsets.symmetric(horizontal: 30.0, vertical: 15.0), children: [
child: SingleChildScrollView( Expanded(
child: Container( child: SingleChildScrollView(
height: 750.0, child: Padding(
child: Column( padding: const EdgeInsets.all(21),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Texts( Text(
'The next ovulation period is estimated to be:', TranslationBase.of(context).ovulation,
fontWeight: FontWeight.w400, style: TextStyle(
), fontSize: 19,
Texts( letterSpacing: -1.14,
'From:', fontWeight: FontWeight.w600,
fontWeight: FontWeight.w400, ),
), ),
Texts( mHeight(20),
DateFormat.yMMMEd().format(dateFrom), Text(
fontWeight: FontWeight.w800, TranslationBase.of(context).ovulationPeriod,
fontSize: 21.0, style: TextStyle(
), fontSize: 14,
Texts( letterSpacing: -0.56,
'To:', fontWeight: FontWeight.w600,
fontWeight: FontWeight.w400, color: CustomColors.textColor,
), ),
Texts( ),
DateFormat.yMMMEd().format(dateTo), mHeight(20),
fontWeight: FontWeight.w800, showItem(TranslationBase.of(context).from, DateFormat.yMMMEd().format(dateFrom), titleColor: CustomColors.accentColor),
fontSize: 21.0, mHeight(12),
), showItem(TranslationBase.of(context).to, DateFormat.yMMMEd().format(dateTo), titleColor: CustomColors.accentColor),
Texts( mHeight(12),
'Useful Information:', mDivider(CustomColors.devider),
color: Color(0xffC5272D), mHeight(12),
), Text(
Texts( TranslationBase.of(context).useFullInfo,
'You have conceived on:', style: TextStyle(
fontWeight: FontWeight.w400, fontSize: 14,
), letterSpacing: -0.56,
Texts( color: CustomColors.accentColor,
DateFormat.yMMMEd().format(conceivedDate), fontWeight: FontWeight.w500,
fontWeight: FontWeight.w800, ),
fontSize: 21.0, ),
), mHeight(12),
Texts( showItem(TranslationBase.of(context).conceive, DateFormat.yMMMEd().format(conceivedDate)),
'The baby\'s age right now:', mHeight(12),
fontWeight: FontWeight.w400, mDivider(CustomColors.devider),
), mHeight(12),
Texts( showItem(TranslationBase.of(context).babyAge, babyAge <= 0 ? TranslationBase.of(context).babyAgeAvail : babyAge.toString() + TranslationBase.of(context).week),
babyAge <= 0 ? "baby age is not available" : babyAge.toString() + " Weeks",
fontWeight: FontWeight.w800, mHeight(12),
fontSize: 21.0, mDivider(CustomColors.devider),
), mHeight(12), showItem(TranslationBase.of(context).deliveryDue, DateFormat.yMMMEd().format(deliveryDue)),
Texts( ],
'The delivery due date is estimated to be on the: ', ).withBorderedContainer,
fontWeight: FontWeight.w400, ),
),
Texts(
DateFormat.yMMMEd().format(deliveryDue),
fontWeight: FontWeight.w800,
fontSize: 21.0,
),
Container(
width: 350,
child: DefaultButton(
TranslationBase.of(context).seeDoctorsList,
() {
getDoctorsList(context);
},
),
),
],
), ),
), ),
), Container(
margin: EdgeInsets.symmetric(horizontal: 16.0, vertical: 16.0),
color: Colors.white,
child: SecondaryButton(
label: TranslationBase.of(context).viewDocList,
color: CustomColors.accentColor,
onTap: () {
getDoctorsList(context);
},
),
),
],
),
);
}
Widget showItem(String title, String value, {Color titleColor}) {
return Container(
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: TextStyle(
fontSize: 14,
letterSpacing: -0.56,
color: titleColor ?? Colors.black,
fontWeight: FontWeight.w500,
// fontWeight: FontWeight.w600,
),
),
Text(
value,
style: TextStyle(
fontSize: 18,
letterSpacing: -1.08,
fontWeight: FontWeight.w600,
),
),
],
), ),
); );
} }
@ -148,26 +176,17 @@ class OvulationResult extends StatelessWidget {
List<PatientDoctorAppointmentList> doctorByHospital = _patientDoctorAppointmentListHospital List<PatientDoctorAppointmentList> doctorByHospital = _patientDoctorAppointmentListHospital
.where( .where(
(elementClinic) => elementClinic.filterName == element.projectName, (elementClinic) => elementClinic.filterName == element.projectName,
) )
.toList(); .toList();
if (doctorByHospital.length != 0) { if (doctorByHospital.length != 0) {
_patientDoctorAppointmentListHospital[_patientDoctorAppointmentListHospital.indexOf(doctorByHospital[0])].patientDoctorAppointmentList.add(element); _patientDoctorAppointmentListHospital[_patientDoctorAppointmentListHospital.indexOf(doctorByHospital[0])].patientDoctorAppointmentList.add(element);
} else { } else {
_patientDoctorAppointmentListHospital _patientDoctorAppointmentListHospital.add(PatientDoctorAppointmentList(filterName: element.projectName, distanceInKMs: "0", patientDoctorAppointment: element));
.add(PatientDoctorAppointmentList(filterName: element.projectName, distanceInKMs: "0", patientDoctorAppointment: element));
} }
}); });
Navigator.push( Navigator.push(context, FadePage(page: SearchResults(isLiveCareAppointment: false, doctorsList: doctorsList, patientDoctorAppointmentListHospital: _patientDoctorAppointmentListHospital)));
context,
FadePage(
page: SearchResults(
isLiveCareAppointment: false,
doctorsList: doctorsList,
patientDoctorAppointmentListHospital:
_patientDoctorAppointmentListHospital)));
} }
} }
}).catchError((err) { }).catchError((err) {
@ -175,5 +194,20 @@ class OvulationResult extends StatelessWidget {
print(err); print(err);
}); });
} }
}
extension BorderedContainer on Widget {
Widget get withBorderedContainer => Container(
padding: EdgeInsets.only(left: 16, right: 16, bottom: 15, top: 15),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.white,
border: Border.all(
color: Color(0xffefefef),
width: 1,
),
),
child: this,
);
} }

@ -2622,6 +2622,49 @@ class TranslationBase {
String get waist => localizedValues["waist"][locale.languageCode]; String get waist => localizedValues["waist"][locale.languageCode];
String get hip => localizedValues["hip"][locale.languageCode]; String get hip => localizedValues["hip"][locale.languageCode];
String get carbsProtin => localizedValues["carbsProtin"][locale.languageCode]; String get carbsProtin => localizedValues["carbsProtin"][locale.languageCode];
String get useFullInfo => localizedValues["usefulInfo"][locale.languageCode];
String get babyAge => localizedValues["babyAge"][locale.languageCode];
String get babyAgeAvail => localizedValues["babyAgeAvail"][locale.languageCode];
String get deliveryDue => localizedValues["deliveryDue"][locale.languageCode];
String get almostInactive => localizedValues["almostInactive"][locale.languageCode];
String get lightActive1 => localizedValues["lightActive1"][locale.languageCode];
String get veryActive => localizedValues["veryActive"][locale.languageCode];
String get superActive => localizedValues["superActive"][locale.languageCode];
String get dailyIntake => localizedValues["dailyIntake"][locale.languageCode];
String get calculateAmount => localizedValues["calculateAmount"][locale.languageCode];
String get bodyWillBurn => localizedValues["bodyWillBurn"][locale.languageCode];
String get caloriesEachDay => localizedValues["caloriesEachDay"][locale.languageCode];
String get maintainWeight => localizedValues["maintainWeight"][locale.languageCode];
String get mediumFinger => localizedValues["mediumFinger"][locale.languageCode];
String get smallFinger => localizedValues["smallFinger"][locale.languageCode];
String get largeFinger => localizedValues["largeFinger"][locale.languageCode];
String get idealBodyWeight => localizedValues["idealBodyWeight"][locale.languageCode];
String get bodyFrameSize => localizedValues["bodyFrameSize"][locale.languageCode];
String get idealWeightRange => localizedValues["idealWeightRange"][locale.languageCode];
String get currentWeightPerfect => localizedValues["currentWeightPerfect"][locale.languageCode];
String get littleBitWeightMore => localizedValues["littleBitWeightMore"][locale.languageCode];
String get consultWithDoctor => localizedValues["consultWithDoctor"][locale.languageCode];
String get excessiveObesity => localizedValues["excessiveObesity"][locale.languageCode];
String get mayWish => localizedValues["mayWish"][locale.languageCode];
String get essential => localizedValues["essential"][locale.languageCode];
String get athlete => localizedValues["athlete"][locale.languageCode];
String get fitness => localizedValues["fitness"][locale.languageCode];
String get acceptable => localizedValues["acceptable"][locale.languageCode];
String get underObese => localizedValues["underObese"][locale.languageCode];
String get crossedLimits => localizedValues["crossedLimits"][locale.languageCode];
String get lowLimits => localizedValues["lowLimits"][locale.languageCode];
String get estimates => localizedValues["estimates"][locale.languageCode];
} }
class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> { class TranslationBaseDelegate extends LocalizationsDelegate<TranslationBase> {

Loading…
Cancel
Save