Merge branch 'insurance' into 'master'
health Calculator'General Health' See merge request Cloud_Solution/diplomatic-quarter!61er_location
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 2.4 KiB |
@ -0,0 +1,521 @@
|
||||
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/bmi_calculator/result_page.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'dart:math';
|
||||
|
||||
const activeCardColor = Color(0xff70777A);
|
||||
const inactiveCardColor = Color(0xffFAFAFd);
|
||||
|
||||
class BMICalculator extends StatefulWidget {
|
||||
@override
|
||||
_BMICalculatorState createState() => _BMICalculatorState();
|
||||
}
|
||||
|
||||
class _BMICalculatorState extends State<BMICalculator> {
|
||||
TextEditingController textController = new TextEditingController();
|
||||
String textResult;
|
||||
String msg;
|
||||
double bmiResult;
|
||||
int height = 150;
|
||||
int weight = 40;
|
||||
Color cmCard = activeCardColor;
|
||||
Color ftCard = inactiveCardColor;
|
||||
Color lbCard = inactiveCardColor;
|
||||
Color kgCard = activeCardColor;
|
||||
void updateColor(int type) {
|
||||
//MG/DLT card
|
||||
if (type == 1) {
|
||||
if (cmCard == inactiveCardColor) {
|
||||
cmCard = activeCardColor;
|
||||
ftCard = inactiveCardColor;
|
||||
} else {
|
||||
cmCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
if (type == 2) {
|
||||
if (ftCard == inactiveCardColor) {
|
||||
ftCard = activeCardColor;
|
||||
cmCard = inactiveCardColor;
|
||||
} else {
|
||||
ftCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void updateColorWeight(int type) {
|
||||
//MG/DLT card
|
||||
if (type == 1) {
|
||||
if (kgCard == inactiveCardColor) {
|
||||
kgCard = activeCardColor;
|
||||
lbCard = inactiveCardColor;
|
||||
} else {
|
||||
kgCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
if (type == 2) {
|
||||
if (lbCard == inactiveCardColor) {
|
||||
lbCard = activeCardColor;
|
||||
kgCard = inactiveCardColor;
|
||||
} else {
|
||||
lbCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
double convertToCm(double number) {
|
||||
return number * 30.48;
|
||||
}
|
||||
|
||||
double convertToKg(double number) {
|
||||
return number / 2.205;
|
||||
}
|
||||
|
||||
double calculateBMI() {
|
||||
if (ftCard == activeCardColor) {
|
||||
convertToCm(height.toDouble());
|
||||
}
|
||||
bmiResult = weight / pow(height / 100, 2);
|
||||
|
||||
return bmiResult;
|
||||
}
|
||||
|
||||
void showTextResult() {
|
||||
if (bmiResult >= 30) {
|
||||
textResult = 'Obese';
|
||||
} else if (bmiResult < 30 && bmiResult >= 25) {
|
||||
textResult = 'OverWeight';
|
||||
} else if (bmiResult < 25 && bmiResult >= 18.5) {
|
||||
textResult = 'Healthy';
|
||||
} else if (bmiResult < 18.5) {
|
||||
textResult = 'UnderWeight';
|
||||
}
|
||||
}
|
||||
|
||||
void showMsg() {
|
||||
if (bmiResult >= 30) {
|
||||
msg =
|
||||
'A BMI of over 30 indicates that are heavily overweight. Health may be at risk if not lose weight. Recommended talking to a doctor or a dietician for advice. To book an appointment, click below to get started.';
|
||||
} else if (bmiResult < 30 && bmiResult >= 25) {
|
||||
msg =
|
||||
'A BMI of 25 - 30 indicates that are slightly overweight. May be advised to lose some weight for health reasons. Recommended talking to a doctor or a dietician for advice. To book an appointment, click below to get ';
|
||||
} else if (bmiResult < 25 && bmiResult >= 18.5) {
|
||||
msg =
|
||||
'A BMI of 18.5 - 25 indicates that are at a healthy weight for the height. By maintaining a healthy weight, lower the risk of developing severe health problems. To book an appointment, click below to get started.';
|
||||
} else if (bmiResult < 18.5) {
|
||||
msg =
|
||||
'A BMI of less than 18.5 indicates that are underweight, so may need to put on some weight. Recommended talking to a doctor or a dietician for advice. To book an appointment, click below to get started.';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
textController.text = '0'; // Setting the initial value for the field.
|
||||
}
|
||||
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: 'BMI Calculator',
|
||||
body: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Center(
|
||||
child: Container(
|
||||
width: 350.0,
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 15.0),
|
||||
child: Text(
|
||||
'Calculate the BMI value and weight\n status to identify the healthy weight .\n Not appropriate for children and women\n who are pregnant or breastfeeding',
|
||||
style: TextStyle(fontSize: 18.0),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 200.0,
|
||||
width: 350.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadius.circular(12.0),
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: Texts('Height'),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 10.0, horizontal: 8.0),
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 60.0,
|
||||
foregroundDecoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
border: Border.all(
|
||||
color: Colors.blueGrey,
|
||||
width: 2.0,
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: Text(height.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 (height < 250) height++;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
child: Icon(
|
||||
Icons.arrow_drop_down,
|
||||
size: 18.0,
|
||||
),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
if (height > 120) height--;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Slider(
|
||||
value: height.toDouble(),
|
||||
min: 120,
|
||||
max: 250,
|
||||
onChanged: (double newValue) {
|
||||
setState(() {
|
||||
height = newValue.round();
|
||||
});
|
||||
},
|
||||
activeColor: Color(0xffC5272D),
|
||||
inactiveColor: Color(0xffF3C5C6),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: Texts('Select Unit'),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColor(1);
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset:
|
||||
Offset(0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
color: cmCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 0.0, horizontal: 18.0),
|
||||
child: Center(child: Texts('CM')),
|
||||
),
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColor(2);
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
color: ftCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset:
|
||||
Offset(0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Center(child: Texts('FT')),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 25.0,
|
||||
),
|
||||
Container(
|
||||
height: 200.0,
|
||||
width: 350.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadius.circular(12.0),
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: Texts('Weight'),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 10.0, horizontal: 8.0),
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 60.0,
|
||||
foregroundDecoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
border: Border.all(
|
||||
color: Colors.blueGrey,
|
||||
width: 2.0,
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: Text(weight.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 (weight < 250) weight++;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
child: Icon(
|
||||
Icons.arrow_drop_down,
|
||||
size: 18.0,
|
||||
),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
if (weight > 40) weight--;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Slider(
|
||||
value: weight.toDouble(),
|
||||
min: 40,
|
||||
max: 250,
|
||||
onChanged: (double newValue) {
|
||||
setState(() {
|
||||
weight = newValue.round();
|
||||
});
|
||||
},
|
||||
activeColor: Color(0xffC5272D),
|
||||
inactiveColor: Color(0xffF3C5C6),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: Texts('Select Unit'),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColorWeight(1);
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset:
|
||||
Offset(0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
color: kgCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 0.0, horizontal: 18.0),
|
||||
child: Center(child: Texts('KG')),
|
||||
),
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColorWeight(2);
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
color: lbCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset:
|
||||
Offset(0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Center(child: Texts('LB')),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 25.0,
|
||||
),
|
||||
Container(
|
||||
height: 100.0,
|
||||
width: 350.0,
|
||||
child: Button(
|
||||
label: 'CALCULATE',
|
||||
onTap: () {
|
||||
setState(() {
|
||||
calculateBMI();
|
||||
showTextResult();
|
||||
showMsg();
|
||||
{
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => ResultPage(
|
||||
finalResult: bmiResult,
|
||||
textResult: textResult,
|
||||
msg: msg,
|
||||
)),
|
||||
);
|
||||
}
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,101 @@
|
||||
import 'dart:ffi';
|
||||
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:percent_indicator/percent_indicator.dart';
|
||||
|
||||
class ResultPage extends StatelessWidget {
|
||||
final double finalResult;
|
||||
final String textResult;
|
||||
final String msg;
|
||||
|
||||
ResultPage({this.finalResult, this.textResult, this.msg});
|
||||
Color inductorColor;
|
||||
double percent;
|
||||
|
||||
Color colorInductor() {
|
||||
if (finalResult >= 30) {
|
||||
inductorColor = Color(0xffC70D00);
|
||||
} else if (finalResult < 30 && finalResult >= 25) {
|
||||
inductorColor = Color(0xffC25400);
|
||||
} else if (finalResult < 25 && finalResult >= 18.5) {
|
||||
inductorColor = Color(0xff36D600);
|
||||
} else if (finalResult < 18.5) {
|
||||
inductorColor = Color(0xff1BE0EE);
|
||||
}
|
||||
return inductorColor;
|
||||
}
|
||||
|
||||
double percentInductor() {
|
||||
if (finalResult >= 30) {
|
||||
percent = 1.0;
|
||||
} else if (finalResult < 30 && finalResult >= 25) {
|
||||
percent = 0.73;
|
||||
} else if (finalResult < 25 && finalResult >= 18.5) {
|
||||
percent = 0.5;
|
||||
} else if (finalResult < 18.5) {
|
||||
percent = 0.25;
|
||||
}
|
||||
return percent;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: "BMI Calculator",
|
||||
body: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
SizedBox(
|
||||
// height: 40.0,
|
||||
),
|
||||
Center(
|
||||
child: CircularPercentIndicator(
|
||||
radius: 220.0,
|
||||
lineWidth: 20.0,
|
||||
percent: percentInductor(),
|
||||
center: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
finalResult.toStringAsFixed(1),
|
||||
style: TextStyle(
|
||||
fontSize: 18.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Text(
|
||||
textResult,
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
progressColor: colorInductor(),
|
||||
backgroundColor: Colors.white,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 120,
|
||||
width: 280.0,
|
||||
child: Texts(msg),
|
||||
),
|
||||
Container(
|
||||
width: 350,
|
||||
child: Button(
|
||||
label: 'See List Of Doctors',
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:percent_indicator/circular_percent_indicator.dart';
|
||||
|
||||
class BmrResultPage extends StatelessWidget {
|
||||
final double bmrResult;
|
||||
final double calories;
|
||||
BmrResultPage({this.bmrResult, this.calories});
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: 'BMR Calculator',
|
||||
body: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
Center(
|
||||
child: CircularPercentIndicator(
|
||||
radius: 220.0,
|
||||
lineWidth: 20.0,
|
||||
percent: ((this.bmrResult > 3500) ? 100 : this.bmrResult / 3500),
|
||||
center: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
bmrResult.toStringAsFixed(1),
|
||||
style: TextStyle(
|
||||
fontSize: 18.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Text(
|
||||
'Calories/Day',
|
||||
style: TextStyle(
|
||||
fontSize: 16.0,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
progressColor: Color(0xff3C3939),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 120,
|
||||
width: 280.0,
|
||||
child: Texts(
|
||||
'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.'),
|
||||
),
|
||||
Container(
|
||||
width: 350,
|
||||
child: Button(
|
||||
label: 'See List Of Doctors',
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:percent_indicator/circular_percent_indicator.dart';
|
||||
|
||||
class FatResult extends StatelessWidget {
|
||||
final double bodyFat;
|
||||
final double fat;
|
||||
final String textResult;
|
||||
|
||||
FatResult({this.bodyFat, this.fat, this.textResult = ''});
|
||||
Color inductorColor;
|
||||
Color colorInductor() {
|
||||
if (bodyFat >= 17) {
|
||||
inductorColor = Color(0xffC70D00);
|
||||
} else if (bodyFat < 20 && bodyFat >= 24) {
|
||||
inductorColor = Color(0xffC25400);
|
||||
} else if (bodyFat < 24 && bodyFat >= 31) {
|
||||
inductorColor = Color(0xff36D600);
|
||||
} else if (bodyFat > 45) {
|
||||
inductorColor = Color(0xff1BE0EE);
|
||||
}
|
||||
return inductorColor;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: 'Body Fat',
|
||||
body: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
SizedBox(
|
||||
// height: 40.0,
|
||||
),
|
||||
Center(
|
||||
child: CircularPercentIndicator(
|
||||
radius: 220.0,
|
||||
lineWidth: 20.0,
|
||||
percent: ((fat > 70) ? 100 : fat / 100),
|
||||
center: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
fat.toStringAsFixed(1) + '%',
|
||||
style: TextStyle(
|
||||
fontSize: 18.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
],
|
||||
),
|
||||
progressColor: inductorColor,
|
||||
backgroundColor: Colors.white,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 120,
|
||||
width: 280.0,
|
||||
child: Texts(textResult),
|
||||
),
|
||||
Container(
|
||||
width: 350,
|
||||
child: Button(
|
||||
label: 'See List Of Doctors',
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,676 @@
|
||||
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/calorie_calculator/calorie_result_page.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
const activeCardColorGender = Color(0xffC5272D);
|
||||
const inactiveCardColorGender = Color(0xffFAFAFd);
|
||||
const activeCardColor = Color(0xff70777A);
|
||||
const inactiveCardColor = Color(0xffFAFAFd);
|
||||
|
||||
class CalorieCalculator extends StatefulWidget {
|
||||
@override
|
||||
_CalorieCalculatorState createState() => _CalorieCalculatorState();
|
||||
}
|
||||
|
||||
class _CalorieCalculatorState extends State<CalorieCalculator> {
|
||||
bool isMale = false;
|
||||
Color maleCard = activeCardColorGender;
|
||||
Color femaleCard = inactiveCardColorGender;
|
||||
Color kgCard = activeCardColor;
|
||||
Color lbCard = inactiveCardColor;
|
||||
Color cmCard = activeCardColor;
|
||||
Color ftCard = inactiveCardColor;
|
||||
int age = 0;
|
||||
int height = 0;
|
||||
int weight = 0;
|
||||
double calories;
|
||||
String dropdownValue;
|
||||
void updateColor(int type) {
|
||||
//MG/DLT card
|
||||
if (type == 1) {
|
||||
if (maleCard == inactiveCardColorGender) {
|
||||
maleCard = activeCardColorGender;
|
||||
femaleCard = inactiveCardColorGender;
|
||||
} else {
|
||||
maleCard = inactiveCardColorGender;
|
||||
}
|
||||
}
|
||||
if (type == 2) {
|
||||
if (femaleCard == inactiveCardColorGender) {
|
||||
femaleCard = activeCardColorGender;
|
||||
maleCard = inactiveCardColorGender;
|
||||
} else {
|
||||
femaleCard = inactiveCardColorGender;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void updateColorWeight(int type) {
|
||||
//MG/DLT card
|
||||
if (type == 1) {
|
||||
if (kgCard == inactiveCardColor) {
|
||||
kgCard = activeCardColor;
|
||||
lbCard = inactiveCardColor;
|
||||
} else {
|
||||
kgCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
if (type == 2) {
|
||||
if (lbCard == inactiveCardColor) {
|
||||
lbCard = activeCardColor;
|
||||
kgCard = inactiveCardColor;
|
||||
} else {
|
||||
lbCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void updateColorHeight(int type) {
|
||||
//MG/DLT card
|
||||
if (type == 1) {
|
||||
if (cmCard == inactiveCardColor) {
|
||||
cmCard = activeCardColor;
|
||||
ftCard = inactiveCardColor;
|
||||
} else {
|
||||
cmCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
if (type == 2) {
|
||||
if (ftCard == inactiveCardColor) {
|
||||
ftCard = activeCardColor;
|
||||
cmCard = inactiveCardColor;
|
||||
} else {
|
||||
ftCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void calculateCalories() {
|
||||
if (isMale == true) {
|
||||
calories = 66.5 + (13.75 * weight) + (5.003 * height) - (6.755 * age);
|
||||
} else if (isMale == false) {
|
||||
calories =
|
||||
655.0955 + (9.5634 * weight) + (1.850 * height) - (4.676 * age);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: 'Calorie Calculator',
|
||||
body: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 25.0, vertical: 15.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Container(
|
||||
height: 890.0,
|
||||
child: Column(
|
||||
//mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(10.0),
|
||||
child: Texts(
|
||||
'Calculates daily calorie intake based on several factors, like height, weight, age, gender and daily physical activity rate',
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: 10.0, vertical: 15.0),
|
||||
child: Texts('Gender'),
|
||||
),
|
||||
Container(
|
||||
width: 350,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(35.0),
|
||||
color: Colors.white,
|
||||
border: Border.all(
|
||||
color: Colors.black45,
|
||||
)),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColor(1);
|
||||
isMale = false;
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 170.0,
|
||||
decoration: BoxDecoration(
|
||||
color: maleCard,
|
||||
borderRadius: BorderRadius.circular(35.0),
|
||||
),
|
||||
child: Center(child: Texts('FEMALE')),
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColor(2);
|
||||
isMale = true;
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 170.0,
|
||||
decoration: BoxDecoration(
|
||||
color: femaleCard,
|
||||
borderRadius: BorderRadius.circular(35.0),
|
||||
),
|
||||
child: Center(child: Texts('MALE')),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 15.0,
|
||||
),
|
||||
Texts(
|
||||
'The Age ( 11 - 120 ) yrs',
|
||||
),
|
||||
SizedBox(
|
||||
height: 10.0,
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 335.0,
|
||||
height: 60.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 10.0, horizontal: 8.0),
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 60.0,
|
||||
foregroundDecoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
border: Border.all(
|
||||
color: Colors.blueGrey,
|
||||
width: 2.0,
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: Text(age.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 (age < 120) age++;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
child: Icon(
|
||||
Icons.arrow_drop_down,
|
||||
size: 18.0,
|
||||
),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
if (age > 0) age--;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Slider(
|
||||
value: age.toDouble(),
|
||||
min: 0,
|
||||
max: 120,
|
||||
onChanged: (double newValue) {
|
||||
setState(() {
|
||||
age = newValue.round();
|
||||
});
|
||||
},
|
||||
activeColor: Color(0xffC5272D),
|
||||
inactiveColor: Color(0xffF3C5C6),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Texts(
|
||||
'Height',
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 335.0,
|
||||
height: 60.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 10.0, horizontal: 8.0),
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 60.0,
|
||||
foregroundDecoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
border: Border.all(
|
||||
color: Colors.blueGrey,
|
||||
width: 2.0,
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: Text(height.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 (height < 250) height++;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
child: Icon(
|
||||
Icons.arrow_drop_down,
|
||||
size: 18.0,
|
||||
),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
if (height > 0) height--;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Slider(
|
||||
value: height.toDouble(),
|
||||
min: 0,
|
||||
max: 250,
|
||||
onChanged: (double newValue) {
|
||||
setState(() {
|
||||
height = newValue.round();
|
||||
});
|
||||
},
|
||||
activeColor: Color(0xffC5272D),
|
||||
inactiveColor: Color(0xffF3C5C6),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Texts('Select Unit'),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColorHeight(1);
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset:
|
||||
Offset(0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
color: cmCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 0.0, horizontal: 18.0),
|
||||
child: Center(child: Texts('CM')),
|
||||
),
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColorHeight(2);
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
color: ftCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset:
|
||||
Offset(0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Center(child: Texts('Ft')),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Texts(
|
||||
'Weight',
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 335.0,
|
||||
height: 60.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 10.0, horizontal: 8.0),
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 60.0,
|
||||
foregroundDecoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
border: Border.all(
|
||||
color: Colors.blueGrey,
|
||||
width: 2.0,
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: Text(weight.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 (weight < 250) weight++;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
child: Icon(
|
||||
Icons.arrow_drop_down,
|
||||
size: 18.0,
|
||||
),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
if (weight > 0) weight--;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Slider(
|
||||
value: weight.toDouble(),
|
||||
min: 0,
|
||||
max: 250,
|
||||
onChanged: (double newValue) {
|
||||
setState(() {
|
||||
weight = newValue.round();
|
||||
});
|
||||
},
|
||||
activeColor: Color(0xffC5272D),
|
||||
inactiveColor: Color(0xffF3C5C6),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Texts('Select Unit'),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColorWeight(1);
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset:
|
||||
Offset(0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
color: kgCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 0.0, horizontal: 18.0),
|
||||
child: Center(child: Texts('KG')),
|
||||
),
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColorWeight(2);
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
color: lbCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset:
|
||||
Offset(0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Center(child: Texts('LB')),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Texts('Activity level'),
|
||||
Container(
|
||||
width: 300,
|
||||
child: DropdownButton<String>(
|
||||
value: dropdownValue,
|
||||
icon: Icon(Icons.arrow_downward),
|
||||
iconSize: 24,
|
||||
elevation: 16,
|
||||
style: TextStyle(color: Colors.black87),
|
||||
underline: Container(
|
||||
height: 2,
|
||||
color: Colors.black54,
|
||||
),
|
||||
onChanged: (String newValue) {
|
||||
setState(() {
|
||||
dropdownValue = newValue;
|
||||
});
|
||||
},
|
||||
items: <String>[
|
||||
'Almost Inactive(Little or no exercises)',
|
||||
'Lighty Active (1-3) days per week',
|
||||
'very Active(6-7) days per week',
|
||||
'Super Active(very hard exercises)'
|
||||
].map<DropdownMenuItem<String>>((String value) {
|
||||
return DropdownMenuItem<String>(
|
||||
value: value,
|
||||
child: Text(value),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 25.0,
|
||||
),
|
||||
Container(
|
||||
height: 100.0,
|
||||
width: 350.0,
|
||||
child: Button(
|
||||
label: 'CALCULATE',
|
||||
onTap: () {
|
||||
setState(() {
|
||||
calculateCalories();
|
||||
print(calories);
|
||||
{
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => CalorieResultPage(
|
||||
calorie: calories,
|
||||
)),
|
||||
);
|
||||
}
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:percent_indicator/circular_percent_indicator.dart';
|
||||
|
||||
class CalorieResultPage extends StatelessWidget {
|
||||
final double calorie;
|
||||
|
||||
CalorieResultPage({this.calorie});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
appBarTitle: 'Calorie Calculator',
|
||||
isShowAppBar: true,
|
||||
body: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
Center(
|
||||
child: CircularPercentIndicator(
|
||||
radius: 220.0,
|
||||
lineWidth: 20.0,
|
||||
percent: ((this.calorie > 3500) ? 100 : this.calorie / 3500),
|
||||
center: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
calorie.toStringAsFixed(1),
|
||||
style: TextStyle(
|
||||
fontSize: 18.0,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Texts('Calories'),
|
||||
],
|
||||
),
|
||||
progressColor: Color(0xff3C3939),
|
||||
backgroundColor: Colors.white,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
child:
|
||||
Texts('Daily intake is ${calorie.toStringAsFixed(1)} calories'),
|
||||
),
|
||||
Container(
|
||||
width: 350,
|
||||
child: Button(
|
||||
label: 'See List Of Doctors',
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,367 @@
|
||||
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/calorie_calculator/calorie_calculator.dart';
|
||||
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/carbs/carbs_result_page.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
class Carbs extends StatefulWidget {
|
||||
@override
|
||||
_CarbsState createState() => _CarbsState();
|
||||
}
|
||||
|
||||
class _CarbsState extends State<Carbs> {
|
||||
TextEditingController textController = new TextEditingController();
|
||||
int calories;
|
||||
String dropdownValue;
|
||||
bool _visible = false;
|
||||
int meals;
|
||||
int protein;
|
||||
int carbs;
|
||||
|
||||
int fat;
|
||||
double pCal;
|
||||
double cCal;
|
||||
double fCal;
|
||||
double pCalGram;
|
||||
double cCalGram;
|
||||
double fCalGram;
|
||||
double pCalMeal;
|
||||
double cCalMeal;
|
||||
double fCalMeal;
|
||||
|
||||
void calculateDietRatios() {
|
||||
if (dropdownValue == 'Very Low Carb') {
|
||||
meals = 3;
|
||||
protein = 45;
|
||||
carbs = 10;
|
||||
fat = 45;
|
||||
} else if (dropdownValue == 'Low Carb') {
|
||||
meals = 3;
|
||||
protein = 40;
|
||||
carbs = 30;
|
||||
fat = 30;
|
||||
} else if (dropdownValue == 'Moderate Carb') {
|
||||
meals = 3;
|
||||
protein = 25;
|
||||
carbs = 50;
|
||||
fat = 25;
|
||||
} else if (dropdownValue == 'USDA Gudilines') {
|
||||
meals = 3;
|
||||
protein = 15;
|
||||
carbs = 55;
|
||||
fat = 30;
|
||||
} else if (dropdownValue == 'Zone Diet') {
|
||||
meals = 3;
|
||||
protein = 30;
|
||||
carbs = 40;
|
||||
fat = 30;
|
||||
}
|
||||
}
|
||||
|
||||
void calculate() {
|
||||
pCal = (protein / 100.0) * int.parse(textController.text).ceil();
|
||||
cCal = (carbs / 100.0) * int.parse(textController.text);
|
||||
;
|
||||
fCal = (fat / 100) * int.parse(textController.text);
|
||||
;
|
||||
pCalGram = pCal / 4.0;
|
||||
cCalGram = cCal / 4.0;
|
||||
fCalGram = fCal / 9.0;
|
||||
pCalMeal = pCalGram / meals.ceil();
|
||||
cCalMeal = cCalGram / meals.ceil();
|
||||
fCalMeal = fCalGram / meals.ceil();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: 'Carb Protein Fat',
|
||||
body: Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 25.0, vertical: 15.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Container(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
'Calculates carbohydrate protein and fat\n ratio in calories and grams according to a\n pre-set ratio',
|
||||
),
|
||||
SizedBox(
|
||||
height: 15.0,
|
||||
),
|
||||
Column(
|
||||
children: [
|
||||
Container(
|
||||
width: 335.0,
|
||||
height: 60.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 10.0, horizontal: 8.0),
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 300.0,
|
||||
foregroundDecoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
border: Border.all(
|
||||
color: Colors.blueGrey,
|
||||
width: 2.0,
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: TextFormField(
|
||||
controller: textController,
|
||||
inputFormatters: <TextInputFormatter>[
|
||||
FilteringTextInputFormatter
|
||||
.digitsOnly
|
||||
],
|
||||
keyboardType: TextInputType.number,
|
||||
decoration: InputDecoration(
|
||||
hintText: " The Calories per day ",
|
||||
labelStyle: TextStyle(
|
||||
color: Colors.black87,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
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(() {
|
||||
int currentValue = int.parse(
|
||||
textController.text);
|
||||
currentValue++;
|
||||
textController.text =
|
||||
(currentValue).toString();
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
child: Icon(
|
||||
Icons.arrow_drop_down,
|
||||
size: 18.0,
|
||||
),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
int currentValue = int.parse(
|
||||
textController.text);
|
||||
currentValue--;
|
||||
textController.text =
|
||||
(currentValue).toString();
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 20.0,
|
||||
),
|
||||
Button(
|
||||
backgroundColor: Color(0xffC5272D),
|
||||
label: 'NOT SURE? CLICK HERE ',
|
||||
onTap: () {
|
||||
setState(() {
|
||||
{
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => CalorieCalculator()),
|
||||
);
|
||||
}
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts('Select Diet Type'),
|
||||
Container(
|
||||
width: 400,
|
||||
child: DropdownButton<String>(
|
||||
value: dropdownValue,
|
||||
icon: Icon(Icons.arrow_downward),
|
||||
iconSize: 24,
|
||||
elevation: 16,
|
||||
style: TextStyle(color: Colors.black87),
|
||||
underline: Container(
|
||||
height: 2,
|
||||
color: Colors.black54,
|
||||
),
|
||||
onChanged: (String newValue) {
|
||||
setState(() {
|
||||
dropdownValue = newValue;
|
||||
calculateDietRatios();
|
||||
|
||||
dropdownValue == null
|
||||
? _visible = false
|
||||
: _visible = true;
|
||||
});
|
||||
},
|
||||
items: <String>[
|
||||
'Very Low Carb',
|
||||
'Low Carb',
|
||||
'Moderate Carb',
|
||||
'USDA Gudilines',
|
||||
'Zone Diet',
|
||||
].map<DropdownMenuItem<String>>((String value) {
|
||||
return DropdownMenuItem<String>(
|
||||
value: value,
|
||||
child: Text(value),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
),
|
||||
Visibility(
|
||||
visible: _visible,
|
||||
child: Container(
|
||||
height: 170.0,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
Texts(
|
||||
'Ratios are divided according to the selected diet'),
|
||||
RichText(
|
||||
text: TextSpan(
|
||||
style: TextStyle(color: Colors.black),
|
||||
children: [
|
||||
TextSpan(text: 'Meals Per Day '),
|
||||
TextSpan(
|
||||
text: '$meals',
|
||||
style: TextStyle(color: Color(0xffC5272D)),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
RichText(
|
||||
text: TextSpan(
|
||||
style: TextStyle(color: Colors.black),
|
||||
children: [
|
||||
TextSpan(
|
||||
text: 'Protein ',
|
||||
),
|
||||
TextSpan(
|
||||
text: '$protein%',
|
||||
style: TextStyle(color: Color(0xffC5272D)),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
RichText(
|
||||
text: TextSpan(
|
||||
style: TextStyle(color: Colors.black),
|
||||
children: [
|
||||
TextSpan(
|
||||
text: 'Carbohydrate ',
|
||||
),
|
||||
TextSpan(
|
||||
text: '$carbs%',
|
||||
style: TextStyle(color: Color(0xffC5272D)),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
RichText(
|
||||
text: TextSpan(
|
||||
style: TextStyle(color: Colors.black),
|
||||
children: [
|
||||
TextSpan(
|
||||
text: 'Fat ',
|
||||
),
|
||||
TextSpan(
|
||||
text: '$fat%',
|
||||
style: TextStyle(color: Color(0xffC5272D)),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 55.0,
|
||||
),
|
||||
Container(
|
||||
height: 100.0,
|
||||
width: 350.0,
|
||||
child: Button(
|
||||
label: 'CALCULATE',
|
||||
onTap: () {
|
||||
setState(() {
|
||||
{
|
||||
calculate();
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => CarbsResult(
|
||||
cCal: cCal,
|
||||
pCal: pCal,
|
||||
fCal: fCal,
|
||||
pCalGram: pCalGram,
|
||||
pCalMeal: pCalMeal,
|
||||
fCalGram: fCalGram,
|
||||
fCalMeal: fCalMeal,
|
||||
cCalGram: cCalGram,
|
||||
cCalMeal: cCalMeal,
|
||||
)),
|
||||
);
|
||||
}
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,175 @@
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:flutter/painting.dart';
|
||||
|
||||
class CarbsResult extends StatelessWidget {
|
||||
double pCal;
|
||||
double cCal;
|
||||
double fCal;
|
||||
double pCalGram;
|
||||
double cCalGram;
|
||||
double fCalGram;
|
||||
double pCalMeal;
|
||||
double cCalMeal;
|
||||
double fCalMeal;
|
||||
|
||||
CarbsResult(
|
||||
{this.pCal,
|
||||
this.cCal,
|
||||
this.fCal,
|
||||
this.pCalGram,
|
||||
this.cCalGram,
|
||||
this.fCalGram,
|
||||
this.fCalMeal,
|
||||
this.cCalMeal,
|
||||
this.pCalMeal});
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: 'Carb Protein Fat',
|
||||
body: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 30.0, horizontal: 10.0),
|
||||
child: Table(
|
||||
border: TableBorder(
|
||||
verticalInside: BorderSide(width: 1, color: Colors.black54),
|
||||
bottom: BorderSide(width: 1, color: Colors.black54),
|
||||
left: BorderSide(width: 1, color: Colors.black54),
|
||||
right: BorderSide(width: 1, color: Colors.black54),
|
||||
top: BorderSide(width: 1, color: Colors.black54),
|
||||
),
|
||||
children: [
|
||||
TableRow(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
),
|
||||
children: [
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts('Description'),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts('Protein'),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts(
|
||||
'Carbohydrate',
|
||||
),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts('Fat'),
|
||||
),
|
||||
),
|
||||
]),
|
||||
TableRow(children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: TableCell(
|
||||
child: Center(
|
||||
child: Texts('Calories\n Per Day'),
|
||||
),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts(pCal.ceil().toString() + ' Cals'),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts(cCal.ceil().toString() + ' Cals'),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts(fCal.ceil().toString() + ' Cals'),
|
||||
),
|
||||
),
|
||||
]),
|
||||
TableRow(children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: TableCell(
|
||||
child: Center(
|
||||
child: Texts('Grams Per\n Day'),
|
||||
),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts(pCalGram.ceil().toString() + ' gr'),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts(cCalGram.ceil().toString() + ' gr'),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts(fCalGram.ceil().toString() + ' gr'),
|
||||
),
|
||||
),
|
||||
]),
|
||||
TableRow(children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.all(8.0),
|
||||
child: TableCell(
|
||||
child: Center(
|
||||
child: Texts('Grams Per\n Meal'),
|
||||
),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts(pCalMeal.ceil().toString() + ' gr'),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts(cCalMeal.ceil().toString() + ' gr'),
|
||||
),
|
||||
),
|
||||
TableCell(
|
||||
child: Center(
|
||||
child: Texts(fCalMeal.ceil().toString() + ' gr'),
|
||||
),
|
||||
),
|
||||
]),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 350,
|
||||
child: Button(
|
||||
label: 'See List Of Doctors',
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
// Texts(pCal.ceil().toString()),
|
||||
// Texts(cCal.ceil().toString()),
|
||||
// Texts(fCal.ceil().toString()),
|
||||
// Texts(pCalGram.ceil().toString()),
|
||||
// Texts(cCalGram.ceil().toString()),
|
||||
// Texts(fCalGram.ceil().toString()),
|
||||
// Texts(pCalMeal.ceil().toString()),
|
||||
// Texts(cCalMeal.ceil().toString()),
|
||||
// Texts(fCalMeal.ceil().toString()),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,550 @@
|
||||
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/ideal_body/ideal_body_result_page.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'dart:math';
|
||||
|
||||
const activeCardColor = Color(0xff70777A);
|
||||
const inactiveCardColor = Color(0xffFAFAFd);
|
||||
|
||||
class IdealBody extends StatefulWidget {
|
||||
@override
|
||||
_IdealBodyState createState() => _IdealBodyState();
|
||||
}
|
||||
|
||||
class _IdealBodyState extends State<IdealBody> {
|
||||
bool isMale = false;
|
||||
bool isHeightCm = true;
|
||||
|
||||
Color kgCard = activeCardColor;
|
||||
Color lbCard = inactiveCardColor;
|
||||
Color cmCard = activeCardColor;
|
||||
Color ftCard = inactiveCardColor;
|
||||
int age = 0;
|
||||
int height = 0;
|
||||
double heightInches;
|
||||
double minRange;
|
||||
double maxRange;
|
||||
double overWeightBy;
|
||||
int weight = 0;
|
||||
double idealWeight = 0;
|
||||
String dropdownValue;
|
||||
double calories = 0;
|
||||
String textResult = '';
|
||||
double maxIdealWeight;
|
||||
double heightFeet;
|
||||
|
||||
void updateColorHeight(int type) {
|
||||
//MG/DLT card
|
||||
if (type == 1) {
|
||||
if (cmCard == inactiveCardColor) {
|
||||
cmCard = activeCardColor;
|
||||
ftCard = inactiveCardColor;
|
||||
} else {
|
||||
cmCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
if (type == 2) {
|
||||
if (ftCard == inactiveCardColor) {
|
||||
ftCard = activeCardColor;
|
||||
cmCard = inactiveCardColor;
|
||||
} else {
|
||||
ftCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void updateColorWeight(int type) {
|
||||
//MG/DLT card
|
||||
if (type == 1) {
|
||||
if (kgCard == inactiveCardColor) {
|
||||
kgCard = activeCardColor;
|
||||
lbCard = inactiveCardColor;
|
||||
} else {
|
||||
kgCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
if (type == 2) {
|
||||
if (lbCard == inactiveCardColor) {
|
||||
lbCard = activeCardColor;
|
||||
kgCard = inactiveCardColor;
|
||||
} else {
|
||||
lbCard = inactiveCardColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void calculateIdealWeight() {
|
||||
heightInches = height * .39370078740157477;
|
||||
heightFeet = heightInches / 12;
|
||||
idealWeight = (50 + 2.3 * (heightInches - 60));
|
||||
if (dropdownValue == 'Small(fingers overlap)') {
|
||||
idealWeight = idealWeight - 10;
|
||||
} else if (dropdownValue == 'Medium(fingers touch)') {
|
||||
idealWeight = idealWeight;
|
||||
} else if (dropdownValue == 'Large(fingers don\'n touch)') {
|
||||
idealWeight = idealWeight + 10;
|
||||
}
|
||||
|
||||
maxIdealWeight = (((idealWeight) * 1.1).round() * 100) / 100;
|
||||
overWeightBy = weight - maxIdealWeight.roundToDouble();
|
||||
minRange = ((idealWeight / 1.1) * 10).round() / 10;
|
||||
maxRange = maxIdealWeight;
|
||||
idealWeight = idealWeight;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: 'Ideal Body Weight',
|
||||
body: Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 15.0, horizontal: 25.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Container(
|
||||
height: 800.0,
|
||||
child: Column(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.all(10.0),
|
||||
child: Texts(
|
||||
'Calculates the ideal body weight based on height, Weight, and Body Size',
|
||||
),
|
||||
),
|
||||
Divider(
|
||||
thickness: 2.0,
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Texts(
|
||||
'Height',
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 335.0,
|
||||
height: 60.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 10.0, horizontal: 8.0),
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 60.0,
|
||||
foregroundDecoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
border: Border.all(
|
||||
color: Colors.blueGrey,
|
||||
width: 2.0,
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: Text(height.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 (height < 250)
|
||||
height++;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
child: Icon(
|
||||
Icons.arrow_drop_down,
|
||||
size: 18.0,
|
||||
),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
if (height > 0) height--;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Slider(
|
||||
value: height.toDouble(),
|
||||
min: 0,
|
||||
max: 250,
|
||||
onChanged: (double newValue) {
|
||||
setState(() {
|
||||
height = newValue.round();
|
||||
});
|
||||
},
|
||||
activeColor: Color(0xffC5272D),
|
||||
inactiveColor: Color(0xffF3C5C6),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Texts('Select Unit'),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColorHeight(1);
|
||||
isHeightCm = true;
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset: Offset(
|
||||
0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
color: cmCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 0.0, horizontal: 18.0),
|
||||
child: Center(child: Texts('CM')),
|
||||
),
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColorHeight(2);
|
||||
isHeightCm = false;
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
color: ftCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset: Offset(
|
||||
0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Center(child: Texts('Ft')),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 45.0,
|
||||
),
|
||||
Divider(
|
||||
thickness: 2.0,
|
||||
),
|
||||
Texts(
|
||||
'Weight',
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 335.0,
|
||||
height: 60.0,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
),
|
||||
child: Row(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 10.0, horizontal: 8.0),
|
||||
child: Center(
|
||||
child: Container(
|
||||
width: 60.0,
|
||||
foregroundDecoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
border: Border.all(
|
||||
color: Colors.blueGrey,
|
||||
width: 2.0,
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: Text(weight.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 (weight < 250)
|
||||
weight++;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
InkWell(
|
||||
child: Icon(
|
||||
Icons.arrow_drop_down,
|
||||
size: 18.0,
|
||||
),
|
||||
onTap: () {
|
||||
setState(() {
|
||||
if (weight > 0) weight--;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Slider(
|
||||
value: weight.toDouble(),
|
||||
min: 0,
|
||||
max: 250,
|
||||
onChanged: (double newValue) {
|
||||
setState(() {
|
||||
weight = newValue.round();
|
||||
});
|
||||
},
|
||||
activeColor: Color(0xffC5272D),
|
||||
inactiveColor: Color(0xffF3C5C6),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Texts('Select Unit'),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColorWeight(1);
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset: Offset(
|
||||
0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
color: kgCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 0.0, horizontal: 18.0),
|
||||
child: Center(child: Texts('KG')),
|
||||
),
|
||||
),
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
updateColorWeight(2);
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
height: 55.0,
|
||||
width: 150.0,
|
||||
decoration: BoxDecoration(
|
||||
color: lbCard,
|
||||
borderRadius: BorderRadius.circular(3.0),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.5),
|
||||
spreadRadius: 3,
|
||||
blurRadius: 7,
|
||||
offset: Offset(
|
||||
0, 3), // changes position of shadow
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(horizontal: 16.0),
|
||||
child: Center(child: Texts('LB')),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: 45.0,
|
||||
),
|
||||
Divider(
|
||||
thickness: 2.0,
|
||||
),
|
||||
SizedBox(
|
||||
height: 5.0,
|
||||
),
|
||||
Texts('Body Frame Size'),
|
||||
Container(
|
||||
width: 300,
|
||||
child: DropdownButton<String>(
|
||||
value: dropdownValue,
|
||||
icon: Icon(Icons.arrow_downward),
|
||||
iconSize: 24,
|
||||
elevation: 16,
|
||||
style: TextStyle(color: Colors.black87),
|
||||
underline: Container(
|
||||
height: 2,
|
||||
color: Colors.black54,
|
||||
),
|
||||
onChanged: (String newValue) {
|
||||
setState(() {
|
||||
dropdownValue = newValue;
|
||||
});
|
||||
},
|
||||
items: <String>[
|
||||
'Small(fingers overlap)',
|
||||
'Medium(fingers touch)',
|
||||
'Large(fingers don\'n touch)',
|
||||
].map<DropdownMenuItem<String>>((String value) {
|
||||
return DropdownMenuItem<String>(
|
||||
value: value,
|
||||
child: Text(value),
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 30.0,
|
||||
),
|
||||
Container(
|
||||
height: 100.0,
|
||||
width: 350.0,
|
||||
child: Button(
|
||||
label: 'CALCULATE',
|
||||
onTap: () {
|
||||
setState(() {
|
||||
// calculateBmr();
|
||||
// calculateCalories();
|
||||
calculateIdealWeight();
|
||||
|
||||
print(idealWeight);
|
||||
//print(overWeightBy);
|
||||
{
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => IdealBodyResult(
|
||||
idealBodyWeight: idealWeight,
|
||||
minRange: minRange,
|
||||
mixRange: maxRange,
|
||||
overWeightBy: overWeightBy,
|
||||
textResult: textResult,
|
||||
)),
|
||||
);
|
||||
}
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,170 @@
|
||||
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'dart:math';
|
||||
|
||||
class IdealBodyResult extends StatelessWidget {
|
||||
final double idealBodyWeight;
|
||||
final double minRange;
|
||||
final double mixRange;
|
||||
final double overWeightBy;
|
||||
final String textResult;
|
||||
|
||||
IdealBodyResult(
|
||||
{this.idealBodyWeight,
|
||||
this.minRange,
|
||||
this.mixRange,
|
||||
this.overWeightBy,
|
||||
this.textResult});
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: 'Ideal Body Weight',
|
||||
body: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
Texts(
|
||||
'Ideal weight range is',
|
||||
fontSize: 23.0,
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Texts(
|
||||
minRange.toStringAsFixed(1),
|
||||
fontSize: 30.0,
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 8.0, left: 4.0),
|
||||
child: Text(
|
||||
'Kg',
|
||||
style: TextStyle(color: Colors.red),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Icon(
|
||||
Icons.arrow_forward,
|
||||
color: Colors.red,
|
||||
size: 55.0,
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Texts(
|
||||
mixRange.toStringAsFixed(1),
|
||||
fontSize: 30.0,
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(top: 8.0, left: 4.0),
|
||||
child: Text(
|
||||
'Kg',
|
||||
style: TextStyle(color: Colors.red),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
overWeightBy >= 0 && overWeightBy <= 10
|
||||
? Column(
|
||||
children: [
|
||||
Texts(
|
||||
'Congratulations! The current weight is\n perfect and considered healthy',
|
||||
fontSize: 20.0,
|
||||
),
|
||||
],
|
||||
)
|
||||
: overWeightBy > 10 && overWeightBy < 17
|
||||
? Column(
|
||||
children: [
|
||||
Texts(
|
||||
'This means that the weight is a little bit more than ideal weight by'),
|
||||
Texts(overWeightBy.toStringAsFixed(1)),
|
||||
Texts(
|
||||
'May wish to consult with the doctor for medical help. Click to view our list of Doctors'),
|
||||
],
|
||||
)
|
||||
: overWeightBy >= 18
|
||||
? Container(
|
||||
height: 250.0,
|
||||
width: 350,
|
||||
child: Column(
|
||||
children: [
|
||||
Texts(
|
||||
'Means that you suffer from excessive\n obesity by',
|
||||
),
|
||||
SizedBox(
|
||||
height: 55.0,
|
||||
),
|
||||
Texts(
|
||||
overWeightBy.toStringAsFixed(1),
|
||||
fontSize: 40.0,
|
||||
),
|
||||
SizedBox(
|
||||
height: 25.0,
|
||||
),
|
||||
Texts(
|
||||
'May wish to consult with the doctor for\n medical help. Click to view our list of\n Doctors'),
|
||||
],
|
||||
),
|
||||
)
|
||||
: overWeightBy < -18
|
||||
? Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Texts(
|
||||
'Under Weight',
|
||||
fontSize: 18.0,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
height: 55.0,
|
||||
),
|
||||
Texts(
|
||||
overWeightBy.toStringAsFixed(1),
|
||||
fontSize: 20.0,
|
||||
),
|
||||
],
|
||||
)
|
||||
: Container(
|
||||
height: 250.0,
|
||||
width: 350.0,
|
||||
child: Column(
|
||||
children: [
|
||||
Texts(
|
||||
'under wheight',
|
||||
fontSize: 20.0,
|
||||
),
|
||||
SizedBox(
|
||||
height: 55.0,
|
||||
),
|
||||
Texts(
|
||||
overWeightBy.toStringAsFixed(1),
|
||||
fontSize: 20.0,
|
||||
),
|
||||
SizedBox(
|
||||
height: 25.0,
|
||||
),
|
||||
Texts(
|
||||
'May wish to consult with the doctor for\n medical help. Click to view our list of\n Doctors'),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 350,
|
||||
child: Button(
|
||||
label: 'See List Of Doctors',
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,279 @@
|
||||
import 'file:///C:/Users/admin/AndroidStudioProjects/diplomatic-quarter/lib/pages/AlHabibMedicalService/health_calculator/bmi_calculator/bmi_calculator.dart';
|
||||
import 'file:///C:/Users/admin/AndroidStudioProjects/diplomatic-quarter/lib/pages/AlHabibMedicalService/health_calculator/calorie_calculator/calorie_calculator.dart';
|
||||
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/body_fat/body_fat.dart';
|
||||
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/carbs/carbs.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/medical/medical_profile_item.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
|
||||
import 'health_calculator/bmr_calculator/bmr_calculator.dart';
|
||||
import 'health_calculator/ideal_body/ideal_body.dart';
|
||||
|
||||
class HealthCalculators extends StatefulWidget {
|
||||
@override
|
||||
_HealthCalculatorsState createState() => _HealthCalculatorsState();
|
||||
}
|
||||
|
||||
class _HealthCalculatorsState extends State<HealthCalculators>
|
||||
with SingleTickerProviderStateMixin {
|
||||
TabController _tabController;
|
||||
void initState() {
|
||||
super.initState();
|
||||
_tabController = TabController(length: 2, vsync: this);
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
_tabController.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: 'Health Calculators',
|
||||
body: Scaffold(
|
||||
extendBodyBehindAppBar: true,
|
||||
appBar: PreferredSize(
|
||||
preferredSize: Size.fromHeight(70.0),
|
||||
child: Stack(
|
||||
children: [
|
||||
Center(
|
||||
child: Container(
|
||||
height: 60.0,
|
||||
margin: EdgeInsets.only(top: 10.0),
|
||||
width: MediaQuery.of(context).size.width * 1.9,
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Theme.of(context).dividerColor,
|
||||
width: 5.7,
|
||||
),
|
||||
),
|
||||
color: Colors.white,
|
||||
),
|
||||
child: Center(
|
||||
child: TabBar(
|
||||
controller: _tabController,
|
||||
isScrollable: true,
|
||||
indicatorWeight: 4.0,
|
||||
indicatorColor: Colors.red,
|
||||
labelColor: Theme.of(context).primaryColor,
|
||||
labelPadding:
|
||||
EdgeInsets.symmetric(horizontal: 13.0, vertical: 2.0),
|
||||
unselectedLabelColor: Colors.grey,
|
||||
tabs: <Widget>[
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width * 0.35,
|
||||
child: Center(
|
||||
child: Texts('General Health'),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: MediaQuery.of(context).size.width * 0.35,
|
||||
child: Center(
|
||||
child: Texts("Women's Health"),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
body: Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: TabBarView(
|
||||
physics: BouncingScrollPhysics(),
|
||||
controller: _tabController,
|
||||
children: [
|
||||
Container(
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 80,
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
FadePage(page: BMICalculator()),
|
||||
);
|
||||
},
|
||||
child: MedicalProfileItem(
|
||||
title: 'BMI',
|
||||
imagePath: 'bmi_health_calculator.png',
|
||||
subTitle: 'Calculators',
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
FadePage(
|
||||
page: CalorieCalculator(),
|
||||
),
|
||||
);
|
||||
},
|
||||
child: MedicalProfileItem(
|
||||
title: 'Calories',
|
||||
imagePath: 'calories-calculator.png',
|
||||
subTitle: 'Calculators',
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
FadePage(
|
||||
page: BmrCalculator(),
|
||||
),
|
||||
);
|
||||
},
|
||||
child: MedicalProfileItem(
|
||||
title: 'BMR',
|
||||
imagePath: 'BMR_calculator.png',
|
||||
subTitle: 'Calculators',
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
FadePage(
|
||||
page: IdealBody(),
|
||||
),
|
||||
);
|
||||
},
|
||||
child: MedicalProfileItem(
|
||||
title: 'Ideal Body',
|
||||
imagePath: 'body_weight.png',
|
||||
subTitle: 'Weight',
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
FadePage(
|
||||
page: BodyFat(),
|
||||
),
|
||||
);
|
||||
},
|
||||
child: MedicalProfileItem(
|
||||
title: 'Body',
|
||||
imagePath: 'body_fat.png',
|
||||
subTitle: 'Fat',
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
FadePage(
|
||||
page: Carbs(),
|
||||
),
|
||||
);
|
||||
},
|
||||
child: MedicalProfileItem(
|
||||
title: 'Carbohydrate',
|
||||
imagePath: 'carb_protein.png',
|
||||
subTitle: 'Protein Fat',
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 80,
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
// Navigator.push(
|
||||
// context,
|
||||
// FadePage(page: BloodSugar()),
|
||||
// );
|
||||
},
|
||||
child: MedicalProfileItem(
|
||||
title: 'Ovulation',
|
||||
imagePath: 'ovulation_period_icon.png',
|
||||
subTitle: 'Period',
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
// Navigator.push(
|
||||
// context,
|
||||
// FadePage(
|
||||
// page: BloodCholesterol(),
|
||||
// ),
|
||||
// );
|
||||
},
|
||||
child: MedicalProfileItem(
|
||||
title: 'Delivery',
|
||||
imagePath: 'delivery_date_icon.png',
|
||||
subTitle: 'Due Date',
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|