Merge branch 'dev_v3.13.6_CS_V2' of http://34.17.52.180/Haroon6138/diplomatic-quarter into dev_v3.13.6_CS_V2

# Conflicts:
#	lib/vital_signs/components/vital_sign_widget.dart
#	lib/vital_signs/vital_sign.dart
dev_v3.13.6_CS_V2
taha.alam 1 year ago
commit a6c58372c2

@ -255,6 +255,7 @@ class _InPatientPendingAdvancePaymentState extends State<InPatientPendingAdvance
int clinicID = projectViewModel.isPatientAdmitted ? projectViewModel.getAdmissionInfoResponseModel.clinicID! : 17; int clinicID = projectViewModel.isPatientAdmitted ? projectViewModel.getAdmissionInfoResponseModel.clinicID! : 17;
service service
.getInPatientPaymentLink( .getInPatientPaymentLink(
widget.inPatientAdvanceResponseModel.responseInpatientAdvanceInfo![0].paymentRequestID!,
projectViewModel.inPatientProjectID, projectViewModel.inPatientProjectID,
// projectViewModel.getAdmissionInfoResponseModel.admissionNo!, // projectViewModel.getAdmissionInfoResponseModel.admissionNo!,
projectViewModel.isPatientAdmitted ? projectViewModel.getAdmissionInfoResponseModel.admissionRequestNo! : projectViewModel.getAdmissionRequestInfoResponseModel.admissionRequestNo!, projectViewModel.isPatientAdmitted ? projectViewModel.getAdmissionInfoResponseModel.admissionRequestNo! : projectViewModel.getAdmissionRequestInfoResponseModel.admissionRequestNo!,

@ -472,7 +472,7 @@ class _CallScreenState extends State<CallScreen> {
], ],
), ),
); );
if (errorType == Errors.SessionJoinFailed || errorType == Errors.SessionDisconnecting) { if (errorType == Errors.SessionJoinFailed || errorType == Errors.SessionDisconncting) {
Timer( Timer(
const Duration(milliseconds: 1000), const Duration(milliseconds: 1000),
() => Navigator.pop(context), () => Navigator.pop(context),

@ -9,13 +9,19 @@ import 'package:diplomaticquarterapp/pages/conference/zoom/call_screen.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.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/utils_new.dart';
import 'package:diplomaticquarterapp/vital_signs/vital_sign.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
import 'package:vital_sign_camera/vital_sign_camera.dart';
import 'fragments/home_page_fragment2.dart'; import 'fragments/home_page_fragment2.dart';
import 'landing_page_pharmcy.dart'; import 'landing_page_pharmcy.dart';
@ -34,6 +40,12 @@ class _HomePageState2 extends State<HomePage2> {
PharmacyModuleViewModel pharmacyModuleViewModel = locator<PharmacyModuleViewModel>(); PharmacyModuleViewModel pharmacyModuleViewModel = locator<PharmacyModuleViewModel>();
late ProjectViewModel projectViewModel; late ProjectViewModel projectViewModel;
TextEditingController weightTextController = new TextEditingController();
TextEditingController heightTextController = new TextEditingController();
TextEditingController ageTextController = new TextEditingController();
String radioValue = "";
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -45,36 +57,145 @@ class _HomePageState2 extends State<HomePage2> {
return BaseView<DashboardViewModel>( return BaseView<DashboardViewModel>(
onModelReady: (model) => model.getPatientRadOrders(), onModelReady: (model) => model.getPatientRadOrders(),
builder: (_, model, wi) => Container( builder: (_, model, wi) => Scaffold(
color: CustomColors.backgroudGreyColor, resizeToAvoidBottomInset: true,
// color: CustomColors.backgroudGreyColor,
// color: Colors.yellow, // color: Colors.yellow,
child: SingleChildScrollView( // child:
physics: BouncingScrollPhysics(), // SingleChildScrollView(
child: Column( // physics: BouncingScrollPhysics(),
children: [ body: SingleChildScrollView(
HomePageFragment2( child: Material(
model, color: CustomColors.backgroudGreyColor,
onLoginClick: () { child: Padding(
widget.onLoginClick!(); padding: const EdgeInsets.all(16.0),
// FirebaseCrashlytics.instance.crash(); child: Column(
// Navigator.pushNamed( mainAxisAlignment: MainAxisAlignment.center,
// context, // crossAxisAlignment: CrossAxisAlignment.start,
// "zoom_call_page", children: [
// arguments: CallArguments("h9qkpf02", "123", "Patient", "40", "1", false), SvgPicture.asset(
// ); 'assets/images/new/cloud_logo.svg',
}, width: 150,
onPharmacyClick: () { height: 150,
// getPharmacyToken(model); ),
Uri uri = Uri.parse(PHARMACY_REDIRECT_URL); mHeight(16.0),
launchUrl(uri, mode: LaunchMode.externalApplication); Text(
}, "Contact-Less Vitals",
onMedicalFileClick: () { style: TextStyle(color: Colors.black, fontSize: 22, letterSpacing: -0.68, fontWeight: FontWeight.bold),
widget.onMedicalFileClick!(); ),
}, mHeight(16.0),
) Text(
], "Select Gender:",
textAlign: TextAlign.start,
style: TextStyle(color: Colors.black, fontSize: 14, letterSpacing: -0.68, fontWeight: FontWeight.bold),
),
mHeight(8.0),
Container(
padding: EdgeInsets.only(left: 6, right: 6),
child: Row(
children: [
Flexible(
child: Row(
children: [
Radio(
value: TranslationBase.of(context).male,
groupValue: radioValue,
onChanged: (v) {
setState(() {
radioValue = v!;
});
},
),
Text(
TranslationBase.of(context).male,
style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
),
),
],
),
),
Flexible(
child: Row(
children: [
Radio(
value: TranslationBase.of(context).female,
groupValue: radioValue,
onChanged: (v) {
setState(() {
radioValue = v!;
});
},
),
Text(
TranslationBase.of(context).female,
style: TextStyle(
fontSize: 12,
letterSpacing: -0.48,
fontWeight: FontWeight.w600,
),
),
],
),
),
],
),
),
mHeight(16.0),
inputWidget(TranslationBase.of(context).age, "0", ageTextController),
mHeight(16.0),
inputWidget(TranslationBase.of(context).weightAdd + " (kg)", "0", weightTextController),
mHeight(16.0),
inputWidget(TranslationBase.of(context).height + " (cm)", "0", heightTextController),
mHeight(16.0),
DefaultButton(
TranslationBase.of(context).start,
(ageTextController.text == "" || weightTextController.text == "" || heightTextController.text == "")
? null
: () {
final UserInfo userInfo = UserInfo(
age: double.parse(ageTextController.text),
gender: radioValue == TranslationBase.of(context).male ? Gender.male : Gender.female,
weight: double.parse(weightTextController.text),
// kg, Optional
height: double.parse(heightTextController.text),
// cm, Optional
waistCircumference: 0,
// cm Optional
userId: 'dbd13e86-47f4-4a43-85f6-cf62fa750117');
Navigator.push(context, FadePage(page: VitalSigns(userInfo: userInfo)));
},
color: CustomColors.green,
disabledColor: CustomColors.grey,
),
// HomePageFragment2(
// model,
// onLoginClick: () {
// widget.onLoginClick!();
// // FirebaseCrashlytics.instance.crash();
// // Navigator.pushNamed(
// // context,
// // "zoom_call_page",
// // arguments: CallArguments("h9qkpf02", "123", "Patient", "40", "1", false),
// // );
// },
// onPharmacyClick: () {
// // getPharmacyToken(model);
// Uri uri = Uri.parse(PHARMACY_REDIRECT_URL);
// launchUrl(uri, mode: LaunchMode.externalApplication);
// },
// onMedicalFileClick: () {
// widget.onMedicalFileClick!();
// },
// )
],
),
),
), ),
), ),
// ),
), ),
); );
} }
@ -101,4 +222,86 @@ class _HomePageState2 extends State<HomePage2> {
navigateToCovidDriveThru() { navigateToCovidDriveThru() {
Navigator.push(context, FadePage(page: CovidDrivethruLocation())); Navigator.push(context, FadePage(page: CovidDrivethruLocation()));
} }
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,
),
prefixIconConstraints: BoxConstraints(minWidth: 50),
prefixIcon: prefix == null
? null
: Text(
"+" + prefix,
style: TextStyle(
fontSize: 14,
height: 21 / 14,
fontWeight: FontWeight.w500,
color: Color(0xff2E303A),
letterSpacing: -0.56,
),
),
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none,
),
),
],
),
),
if (hasSelection) Icon(Icons.keyboard_arrow_down_outlined),
],
),
),
);
}
} }

@ -615,20 +615,22 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
), ),
RobotIcon() RobotIcon()
])), ])),
bottomNavigationBar: BottomNavBar( // bottomNavigationBar: BottomNavBar(
changeIndex: changeCurrentTab, // changeIndex: changeCurrentTab,
index: currentTab, // index: currentTab,
), // ),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
floatingActionButton: (projectViewModel.havePrivilege(34) && currentTab == 0) floatingActionButton:
? FloatingButton( // (projectViewModel.havePrivilege(34) && currentTab == 0)
elevation: true, // ? FloatingButton(
onTap: () { // elevation: true,
changeCurrentTab(2); // onTap: () {
projectViewModel.analytics.appointment.book_appointment(); // changeCurrentTab(2);
}, // projectViewModel.analytics.appointment.book_appointment();
) // },
: null); // )
// :
null);
} }
triggerRobot() { triggerRobot() {

@ -232,7 +232,7 @@ class ServicesView extends StatelessWidget {
} else if (hmgServices.action == 1) { } else if (hmgServices.action == 1) {
openLiveCare(context); openLiveCare(context);
} else if (hmgServices.action == 111) { } else if (hmgServices.action == 111) {
Navigator.push(context, FadePage(page: VitalSigns())); // Navigator.push(context, FadePage(page: VitalSigns()));
} else if (hmgServices.action == 2) { } else if (hmgServices.action == 2) {
//todo for temporary basis //todo for temporary basis
// Navigator.push(context, FadePage(page: ResultScreen( // Navigator.push(context, FadePage(page: ResultScreen(

@ -184,11 +184,12 @@ class ClinicListService extends BaseService {
return Future.value(localRes); return Future.value(localRes);
} }
Future<Map> getInPatientPaymentLink(int projectID, int admissionNo, int orderID, String name, String email, num amount, String nationalID, int clinicID, context) async { Future<Map> getInPatientPaymentLink(int paymentRequestID, int projectID, int admissionNo, int orderID, String name, String email, num amount, String nationalID, int clinicID, context) async {
Map<String, dynamic> request; Map<String, dynamic> request;
// request = {"ProjectID": projectID, "AdmissionReqNo": admissionReqNo, "AdmissionNo": admissionNo}; // request = {"ProjectID": projectID, "AdmissionReqNo": admissionReqNo, "AdmissionNo": admissionNo};
request = { request = {
"PaymentRequestId": paymentRequestID,
"ProjectID": projectID, "ProjectID": projectID,
"ClientOrderID": orderID, "ClientOrderID": orderID,
"OrderDescription": "InPatient Advance Payment", "OrderDescription": "InPatient Advance Payment",

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.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/vital_signs/data/vitals_benchmark.dart'; import 'package:diplomaticquarterapp/vital_signs/data/vitals_benchmark.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@ -10,7 +11,7 @@ class VitalSignWidget extends StatelessWidget {
final String vectorUrl; final String vectorUrl;
final dynamic condition; final dynamic condition;
final Map<String, dynamic>? lookupValues; final Map<String, dynamic>? lookupValues;
final Map<String,dynamic>? bloodPressureValues; final Map<String, dynamic>? bloodPressureValues;
final Color? textColor; final Color? textColor;
const VitalSignWidget({ const VitalSignWidget({
@ -35,268 +36,256 @@ class VitalSignWidget extends StatelessWidget {
shadowColor: CustomColors.lightGreyColor, shadowColor: CustomColors.lightGreyColor,
child: Padding( child: Padding(
padding: const EdgeInsets.all(12.0), padding: const EdgeInsets.all(12.0),
child: Column( child: Column(crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [
crossAxisAlignment: CrossAxisAlignment.start, Row(
mainAxisSize: MainAxisSize.min,
children: [ children: [
Row( SvgPicture.asset(vectorUrl, width: 36.0, height: 36.0),
children: [
SvgPicture.asset(vectorUrl, width: 36.0, height: 36.0),
SizedBox(
width: 16,
),
Text(
vitalSignName,
textAlign: TextAlign.start,
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.w600,
color: textColor ?? Colors.white,
),
),
],
),
SizedBox( SizedBox(
height: 8, width: 16,
), ),
Row( Text(
mainAxisAlignment: MainAxisAlignment.spaceBetween, vitalSignName,
children: [ textAlign: TextAlign.start,
Text( style: TextStyle(
"$vitalSignValue ${condition.unit}", fontSize: 18,
style: TextStyle( fontWeight: FontWeight.w600,
fontSize: 14, color: textColor ?? Colors.white,
color: textColor ?? Colors.white, ),
fontWeight: FontWeight.w500, ),
), ],
), ),
SizedBox( SizedBox(
width: 8, height: 8,
), ),
if (condition is RangeConditionWithTitle) Row(
Status( mainAxisAlignment: MainAxisAlignment.spaceBetween,
status: children: [
"${TranslationBase.of(context).getValue(condition.current?.quantitativeInterpretation ?? '')}", Text(
originalData: condition.current?.quantitativeInterpretation??'', "$vitalSignValue ${condition.unit}",
) style: TextStyle(
else if (condition is RangeConditionForBloodPressure) fontSize: 14,
Status( color: textColor ?? Colors.white,
status: fontWeight: FontWeight.w500,
"${TranslationBase.of(context).getValue(condition.systolic?.systolic.quantitativeInterpretation ?? '')}", ),
originalData: condition
.systolic?.systolic.quantitativeInterpretation ??
'',
)
// Text(
// "${TranslationBase.of(context).getValue(condition.current?.quantitativeInterpretation ?? '')}",
// style: TextStyle(
// fontSize: 14,
// color: textColor ?? Colors.white,
// fontWeight: FontWeight.w500,
// ),
// ),
],
), ),
SizedBox( SizedBox(
height: 8, width: 8,
), ),
// SizedBox(
// height: 30,
// child: Row(mainAxisSize: MainAxisSize.max, children: [
if (condition is RangeConditionWithTitle) if (condition is RangeConditionWithTitle)
SizedBox( Status(
height: 30, status: "${TranslationBase.of(context).getValue(condition.current?.interpretation ?? '')}",
child: Row(mainAxisSize: MainAxisSize.max, children: [ originalData: condition.current?.interpretation ?? '',
Expanded( )
flex: 1, else if (condition is RangeConditionForBloodPressure)
child: ListView.separated( Status(
separatorBuilder: (_, __) => SizedBox( status: "${TranslationBase.of(context).getValue(condition.systolic?.systolic.interpretation ?? '')}",
width: 8, originalData: condition.systolic?.systolic.interpretation ?? '',
), )
scrollDirection: Axis.horizontal, // Text(
shrinkWrap: true, // "${TranslationBase.of(context).getValue(condition.current?.quantitativeInterpretation ?? '')}",
itemCount: condition.condition?.length ?? 0, // style: TextStyle(
itemBuilder: (_, index) => RangeWidget( // fontSize: 14,
title: condition.condition?[index].title ?? 'test', // color: textColor ?? Colors.white,
isSelected: condition.condition?[index] // fontWeight: FontWeight.w500,
.isInRange(vitalSignValue) == // ),
true, // ),
), ],
), ),
SizedBox(
height: 8,
),
// SizedBox(
// height: 30,
// child: Row(mainAxisSize: MainAxisSize.max, children: [
if (condition is RangeConditionWithTitle)
SizedBox(
height: 30,
child: Row(mainAxisSize: MainAxisSize.max, children: [
Expanded(
flex: 1,
child: ListView.separated(
separatorBuilder: (_, __) => SizedBox(
width: 8,
),
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemCount: condition.condition?.length ?? 0,
itemBuilder: (_, index) => RangeWidget(
title: condition.condition?[index].title ?? 'test',
isSelected: condition.condition?[index].isInRange(vitalSignValue) == true,
originalData: condition.current?.interpretation ?? '',
), ),
]), ),
), ),
// Flexible( ]),
// flex: 1, ),
// child: ListView.separated( // Flexible(
// physics: NeverScrollableScrollPhysics(), // flex: 1,
// separatorBuilder: (_, __) => SizedBox( // child: ListView.separated(
// width: 8, // physics: NeverScrollableScrollPhysics(),
// ), // separatorBuilder: (_, __) => SizedBox(
// shrinkWrap: true, // width: 8,
// itemCount: lookupValues?.length ?? 0, // ),
// itemBuilder: (_, index) { // shrinkWrap: true,
// var key = lookupValues?.keys.elementAt(index); // itemCount: lookupValues?.length ?? 0,
// return RangeWidget( // itemBuilder: (_, index) {
// title: key ?? '', // var key = lookupValues?.keys.elementAt(index);
// values: lookupValues?[key] ?? [], // return RangeWidget(
// isSelected: false, // title: key ?? '',
// ); // values: lookupValues?[key] ?? [],
// }), // isSelected: false,
// ), // );
// }),
// ),
if (condition is RangeConditionForBloodPressure) if (condition is RangeConditionForBloodPressure)
SizedBox( SizedBox(
height: 30, height: 30,
child: Row(mainAxisSize: MainAxisSize.max, children: [ child: Row(mainAxisSize: MainAxisSize.max, children: [
Expanded( Expanded(
flex: 1, flex: 1,
child: ListView.separated( child: ListView.separated(
separatorBuilder: (_, __) => SizedBox( separatorBuilder: (_, __) => SizedBox(
width: 8, width: 8,
), ),
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
shrinkWrap: true, shrinkWrap: true,
itemCount: condition.condition?.length ?? 0, itemCount: condition.condition?.length ?? 0,
itemBuilder: (_, currentIndex) { itemBuilder: (_, currentIndex) {
var title = var title = condition.condition?[currentIndex].quotient ?? '';
condition.condition?[currentIndex].quotient ?? return RangeWidget(
''; title: title,
return RangeWidget( isSelected: condition.condition?[currentIndex]?.getValue("systolic-lng")?.isSelected == true,
title: title, originalData: condition.systolic?.systolic.interpretation ?? '',
isSelected: condition.condition?[currentIndex] );
?.getValue("systolic-lng") }),
?.isSelected ==
true,
);
}),
),
]),
), ),
// Flexible( ]),
// flex: 1, ),
// child: ListView.separated( // Flexible(
// separatorBuilder: (_, __) => SizedBox( // flex: 1,
// width: 8, // child: ListView.separated(
// ), // separatorBuilder: (_, __) => SizedBox(
// physics: NeverScrollableScrollPhysics(), // width: 8,
// shrinkWrap: true, // ),
// itemCount: bloodPressure.length ?? 0, // physics: NeverScrollableScrollPhysics(),
// itemBuilder: (_, index) { // shrinkWrap: true,
// // return RangeWidget( // itemCount: bloodPressure.length ?? 0,
// // title: key??'', // itemBuilder: (_, index) {
// // values: lookupValues?[key]??[],isSelected: false, // // return RangeWidget(
// // ); // // title: key??'',
// return Column( // // values: lookupValues?[key]??[],isSelected: false,
// children: [ // // );
// Row( // return Column(
// mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [
// children: [ // Row(
// Text( // mainAxisAlignment: MainAxisAlignment.spaceBetween,
// TranslationBase.of(context) // children: [
// .getValue(bloodPressure[index] ?? ''), // Text(
// textAlign: TextAlign.center, // TranslationBase.of(context)
// style: // .getValue(bloodPressure[index] ?? ''),
// TextStyle(color: Colors.black, fontSize: 16), // textAlign: TextAlign.center,
// ), // style:
// // TextStyle(color: Colors.black, fontSize: 16),
// Status( // ),
// status: //
// "${TranslationBase.of(context).getValue(condition.getValue(bloodPressure[index])?.quantitativeInterpretation ?? '')}", // Status(
// originalData:condition.getValue(bloodPressure[index])?.quantitativeInterpretation ?? '' , // status:
// ) // "${TranslationBase.of(context).getValue(condition.getValue(bloodPressure[index])?.quantitativeInterpretation ?? '')}",
// ], // originalData:condition.getValue(bloodPressure[index])?.quantitativeInterpretation ?? '' ,
// ), // )
// SizedBox(height: 16), // ],
// SizedBox( // ),
// height: 30, // SizedBox(height: 16),
// child: Row( // SizedBox(
// mainAxisSize: MainAxisSize.max, // height: 30,
// children: [ // child: Row(
// Expanded( // mainAxisSize: MainAxisSize.max,
// flex: 1, // children: [
// child: ListView.separated( // Expanded(
// separatorBuilder: (_, __) => SizedBox( // flex: 1,
// width: 8, // child: ListView.separated(
// ), // separatorBuilder: (_, __) => SizedBox(
// scrollDirection: Axis.horizontal, // width: 8,
// shrinkWrap: true, // ),
// itemCount: // scrollDirection: Axis.horizontal,
// condition.condition?.length ?? 0, // shrinkWrap: true,
// itemBuilder: (_, currentIndex) { // itemCount:
// var title = condition // condition.condition?.length ?? 0,
// .condition?[currentIndex] // itemBuilder: (_, currentIndex) {
// .getValue( // var title = condition
// bloodPressure[index]).title ?? // .condition?[currentIndex]
// ''; // .getValue(
// return RangeWidget( // bloodPressure[index]).title ??
// title: title, // '';
// isSelected: condition // return RangeWidget(
// .condition?[currentIndex] // title: title,
// ?.getValue( // isSelected: condition
// bloodPressure[index]) // .condition?[currentIndex]
// ?.isSelected == // ?.getValue(
// true, // bloodPressure[index])
// ); // ?.isSelected ==
// }), // true,
// ), // );
// ]), // }),
// ), // ),
// SizedBox(height: 16), // ]),
// // SizedBox( // ),
// // height:220, // SizedBox(height: 16),
// // child: ListView.separated( // // SizedBox(
// // separatorBuilder: (_, __) => SizedBox( // // height:220,
// // width: 8, // // child: ListView.separated(
// // ), // // separatorBuilder: (_, __) => SizedBox(
// // physics: NeverScrollableScrollPhysics(), // // width: 8,
// // shrinkWrap: true, // // ),
// // itemCount: bloodPressureValues?[key]?.length ?? 0, // // physics: NeverScrollableScrollPhysics(),
// // itemBuilder: (_, index) { // // shrinkWrap: true,
// // var title = bloodPressureValues?[key]?.keys.elementAt(index); // // itemCount: bloodPressureValues?[key]?.length ?? 0,
// // // // itemBuilder: (_, index) {
// // return RangeWidget( // // var title = bloodPressureValues?[key]?.keys.elementAt(index);
// // title: title ?? '', // //
// // values: bloodPressureValues?[key]?[title] ?? [], // // return RangeWidget(
// // isSelected: false, // // title: title ?? '',
// // ); // // values: bloodPressureValues?[key]?[title] ?? [],
// // })) // // isSelected: false,
// ], // // );
// ); // // }))
// }), // ],
// ), // );
// ]), // }),
// ), // ),
SizedBox( // ]),
height: 8, // ),
), SizedBox(
// Row( height: 8,
// mainAxisAlignment: MainAxisAlignment.spaceBetween, ),
// children: [ // Row(
// Text( // mainAxisAlignment: MainAxisAlignment.spaceBetween,
// TranslationBase.of(context).getValue( // children: [
// condition.condition?.first.interpretation ?? ''), // Text(
// style: TextStyle( // TranslationBase.of(context).getValue(
// fontSize: 14, // condition.condition?.first.interpretation ?? ''),
// color: textColor ?? Colors.white, // style: TextStyle(
// fontWeight: FontWeight.w500, // fontSize: 14,
// ), // color: textColor ?? Colors.white,
// ), // fontWeight: FontWeight.w500,
// Text( // ),
// TranslationBase.of(context).getValue( // ),
// condition.condition?.last.interpretation ?? ''), // Text(
// style: TextStyle( // TranslationBase.of(context).getValue(
// fontSize: 14, // condition.condition?.last.interpretation ?? ''),
// color: textColor ?? Colors.white, // style: TextStyle(
// fontWeight: FontWeight.w500, // fontSize: 14,
// ), // color: textColor ?? Colors.white,
// ), // fontWeight: FontWeight.w500,
// ], // ),
// ), // ),
// SizedBox( // ],
// height: 8, // ),
// ), // SizedBox(
]), // height: 8,
// ),
]),
), ),
); );
} }
@ -305,8 +294,9 @@ class VitalSignWidget extends StatelessWidget {
class RangeWidget extends StatelessWidget { class RangeWidget extends StatelessWidget {
final String title; final String title;
final bool isSelected; final bool isSelected;
final String originalData;
const RangeWidget({super.key, required this.title, required this.isSelected}); const RangeWidget({super.key, required this.title, required this.isSelected, required this.originalData});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -317,18 +307,14 @@ class RangeWidget extends StatelessWidget {
borderRadius: BorderRadius.circular(3), borderRadius: BorderRadius.circular(3),
), ),
// color: Color(0xFF359846), // color: Color(0xFF359846),
color: (isSelected) color: (isSelected) ? getColor(originalData) : CustomColors.lightGreyColor,
? CustomColors.accentColor
: CustomColors.lightGreyColor,
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: Center( child: Center(
child: Text( child: Text(
title, title,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(color: (isSelected) ? Colors.white : Colors.black, fontSize: 12),
color: (isSelected) ? Colors.white : Colors.black,
fontSize: 12),
), ),
), ),
), ),
@ -363,29 +349,28 @@ class Status extends StatelessWidget {
borderRadius: BorderRadius.circular(3), borderRadius: BorderRadius.circular(3),
), ),
// color: Color(0xFF359846), // color: Color(0xFF359846),
color: (originalData.toLowerCase() == 'good' || color: getColor(originalData),
originalData.toLowerCase() == 'excellent' ||
originalData.toLowerCase() == 'normal')
? Color(0xFFD8E8DB)
: (originalData.toLowerCase() == 'poor' ||
originalData.toLowerCase() == 'atRisk')
? Color(0xFFD3D37E)
: Color(0x98d02127),
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6), padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6),
child: Text(status, child: Text(status,
style: TextStyle( style: TextStyle(
color: (originalData.toLowerCase() == 'good' || color: Colors.white,
originalData.toLowerCase() == 'excellent' || fontSize: 12,
originalData.toLowerCase() == 'normal')
? Color(0xFF359846)
: (originalData.toLowerCase() == 'poor' ||
originalData.toLowerCase() == 'atRisk')
? Colors.white
: Colors.white,
fontSize: 8,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
)), )),
)); ));
} }
getColor(title) {
switch (title) {
case "excellent":
return Color(0xFF275b45);
case "good":
return Color(0xFF507a3d);
case "poor":
return Color(0xFFa86452);
case "atRisk":
return Color(0xFFa2494b);
}
}
} }

@ -103,7 +103,7 @@ var vital = {
"unit": "mmHg", "unit": "mmHg",
"values": [ "values": [
{ {
"quotient": "(0-90) / (0-60)", "quotient": "0-90",
"systolic-lng": { "systolic-lng": {
"min": 0, "min": 0,
"max": 90, "max": 90,
@ -122,7 +122,7 @@ var vital = {
} }
}, },
{ {
"quotient": "(90-120) / (60-70)", "quotient": "90-120",
"systolic-lng": { "systolic-lng": {
"min": 90, "min": 90,
"max": 120, "max": 120,
@ -141,7 +141,7 @@ var vital = {
} }
}, },
{ {
"quotient": "(120-130) / (70-80)", "quotient": "120-130",
"systolic-lng": { "systolic-lng": {
"min": 120, "min": 120,
"max": 130, "max": 130,
@ -160,7 +160,7 @@ var vital = {
} }
}, },
{ {
"quotient": "(130-140) / (80-90)", "quotient": "130-140",
"systolic-lng": { "systolic-lng": {
"min": 130, "min": 130,
"max": 140, "max": 140,

@ -31,7 +31,6 @@ class ResultScreen extends StatelessWidget {
final deviceSize = MediaQuery.of(context).size; final deviceSize = MediaQuery.of(context).size;
const textColor = Color.fromARGB(255, 0, 0, 0); const textColor = Color.fromARGB(255, 0, 0, 0);
print('the age is ${healthResult?.vitalSigns?.facialSkinAge}');
return AppScaffold( return AppScaffold(
isShowAppBar: true, isShowAppBar: true,
appBarTitle: TranslationBase.of(context).result, appBarTitle: TranslationBase.of(context).result,
@ -39,286 +38,258 @@ class ResultScreen extends StatelessWidget {
showNewAppBarTitle: true, showNewAppBarTitle: true,
overrideUserLogin: true, overrideUserLogin: true,
backgroundColor: Color(0xffF8F8F8), backgroundColor: Color(0xffF8F8F8),
appBarIcons: [
Center(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Text(
"Scan Quality: ${_scanParameters!.signalQuality.toStringAsFixed(0)}%",
style: TextStyle(color: Colors.black, fontSize: 14, letterSpacing: -0.68, fontWeight: FontWeight.bold),
),
),
),
],
body: Padding( body: Padding(
padding: const EdgeInsets.all(15), padding: const EdgeInsets.all(15),
child: ListView( child: ListView(
shrinkWrap: true, shrinkWrap: true,
children: [ children: [
Expanded( Expanded(
child: Column( child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
crossAxisAlignment: CrossAxisAlignment.start, if (_holisticAnalysis != null && _holisticAnalysis?.generalWellness != null)
children: [ VitalSignWidget(
if (_holisticAnalysis != null && textColor: textColor,
_holisticAnalysis?.generalWellness != null) lookupValues: vitalValues['generalWellness']!,
VitalSignWidget( vitalSignName: TranslationBase.of(context).generalWellness,
textColor: textColor, condition: RangeConditionWithTitle.fromJson(vital['generalWellness']!, formatValueToTwoDp(healthResult?.holisticHealth?.generalWellness)),
lookupValues: vitalValues['generalWellness']!, vitalSignValue: formatValueToTwoDp(healthResult?.holisticHealth?.generalWellness),
vitalSignName: vectorUrl: 'assets/images/svg/wellness.svg',
TranslationBase.of(context).generalWellness, ), //wellness
condition: RangeConditionWithTitle.fromJson( if (_vitalSign?.stress != null)
vital['generalWellness']!, VitalSignWidget(
formatValueToTwoDp( textColor: textColor,
healthResult?.holisticHealth?.generalWellness)), vitalSignName: TranslationBase.of(context).stress,
vitalSignValue: formatValueToTwoDp( condition: RangeConditionWithTitle.fromJson(vital['stressLevel']!, formatValueToTwoDp(healthResult?.vitalSigns.stress)),
healthResult?.holisticHealth?.generalWellness), lookupValues: vitalValues['stressLevel']!,
vectorUrl: 'assets/images/svg/wellness.svg', vitalSignValue: formatValueToTwoDp(healthResult?.vitalSigns.stress),
),//wellness vectorUrl: 'assets/images/svg/stress.svg',
if (_vitalSign?.stress != null) ),
VitalSignWidget( VitalSignWidget(
textColor: textColor, textColor: textColor,
vitalSignName: TranslationBase.of(context).stress, vitalSignName: TranslationBase.of(context).pulseTitle,
condition: RangeConditionWithTitle.fromJson( condition: RangeConditionWithTitle.fromJson(vital['HR']!, formatValueToTwoDp(healthResult?.vitalSigns.heartRate)),
vital['stressLevel']!, lookupValues: vitalValues['HR']!,
formatValueToTwoDp( vitalSignValue: formatValueToTwoDp(healthResult?.vitalSigns.heartRate),
healthResult?.vitalSigns.stress)), vectorUrl: 'assets/images/svg/heartrate.svg',
lookupValues: vitalValues['stressLevel']!, ),
vitalSignValue: //heart rate
formatValueToTwoDp(healthResult?.vitalSigns.stress), if (_vitalSign?.bloodPressure != null)
vectorUrl: 'assets/images/svg/stress.svg', VitalSignWidget(
), textColor: textColor,
VitalSignWidget( vitalSignName: "Blood Pressure",
textColor: textColor, condition: RangeConditionForBloodPressure.fromJson(vital['blood_pressure']!, healthResult?.vitalSigns.bloodPressure ?? ""),
vitalSignName: TranslationBase.of(context).pulseTitle, bloodPressureValues: vitalValues['blood_pressure']!,
condition: RangeConditionWithTitle.fromJson( vitalSignValue: healthResult?.vitalSigns.bloodPressure ?? "",
vital['HR']!, vectorUrl: 'assets/images/svg/bloodpressure.svg',
formatValueToTwoDp( ),
healthResult?.vitalSigns.heartRate)), if (_vitalSign?.hrvSdnn != null)
lookupValues: vitalValues['HR']!, VitalSignWidget(
vitalSignValue: formatValueToTwoDp(
healthResult?.vitalSigns.heartRate),
vectorUrl: 'assets/images/svg/heartrate.svg', vectorUrl: 'assets/images/svg/heartrate.svg',
),
//heart rate
if (_vitalSign?.bloodPressure != null)
VitalSignWidget(
textColor: textColor,
vitalSignName: "Blood Pressure",
condition: RangeConditionForBloodPressure.fromJson(
vital['blood_pressure']!,
healthResult?.vitalSigns.bloodPressure ?? ""),
bloodPressureValues: vitalValues['blood_pressure']!,
vitalSignValue:
healthResult?.vitalSigns.bloodPressure ?? "",
vectorUrl: 'assets/images/svg/bloodpressure.svg',
),
if (_vitalSign?.hrvSdnn != null)
VitalSignWidget(
vectorUrl: 'assets/images/svg/heartrate.svg',
textColor: textColor,
vitalSignName: "HRV SDNN",
lookupValues: vitalValues['hrvv']!,
condition: RangeConditionWithTitle.fromJson(
vital['hrvv']!,
formatValueToTwoDp(
healthResult?.vitalSigns.hrvSdnn)),
vitalSignValue: formatValueToTwoDp(
healthResult?.vitalSigns.hrvSdnn)),
//oxygen
VitalSignWidget(
textColor: textColor, textColor: textColor,
lookupValues: vitalValues['Sp02']!, vitalSignName: "HRV SDNN",
vitalSignName: lookupValues: vitalValues['hrvv']!,
TranslationBase.of(context).oxygenSaturation, condition: RangeConditionWithTitle.fromJson(vital['hrvv']!, formatValueToTwoDp(healthResult?.vitalSigns.hrvSdnn)),
condition: RangeConditionWithTitle.fromJson( vitalSignValue: formatValueToTwoDp(healthResult?.vitalSigns.hrvSdnn)),
vital['Sp02']!,
formatValueToTwoDp(healthResult?.vitalSigns.spo2)),
vitalSignValue:
formatValueToTwoDp(healthResult?.vitalSigns.spo2),
vectorUrl: 'assets/images/svg/oxygen.svg',
),
if (_vitalSign?.respiratoryRate != null)
VitalSignWidget(
textColor: textColor,
lookupValues: vitalValues['respiratoryRate']!,
vitalSignName:
TranslationBase.of(context).respiratoryRate,
condition: RangeConditionWithTitle.fromJson(
vital['respiratoryRate']!,
formatValueToTwoDp(
healthResult?.vitalSigns.respiratoryRate)),
vitalSignValue: formatValueToTwoDp(
healthResult?.vitalSigns.respiratoryRate),
vectorUrl: 'assets/images/svg/breathing.svg',
),
if (_holisticAnalysis != null &&
_holisticAnalysis?.bmi != null)
VitalSignWidget(
textColor: textColor,
lookupValues: vitalValues['bmi']!,
vitalSignName: TranslationBase.of(context).BMI,
condition: RangeConditionWithTitle.fromJson(
vital['bmi']!,
formatValueToTwoDp(
healthResult?.holisticHealth?.bmi)),
vitalSignValue: formatValueToTwoDp(
healthResult?.holisticHealth?.bmi),
vectorUrl: 'assets/images/svg/bmi.svg',
),
// VitalSignWidget(
// textColor: textColor,
// vitalSignName: "IBI",
// condition: RangeConditionWithTitle.fromJson(vital['HR']!),
// vitalSignValue:
// formatValueToTwoDp(healthResult?.vitalSigns.ibi)),
// if (_vitalSign?.hrvRmssd != null) //oxygen
// VitalSignWidget( VitalSignWidget(
// textColor: textColor, textColor: textColor,
// vitalSignName: "HRV RMSSD", lookupValues: vitalValues['Sp02']!,
// vitalSignValue: formatValueToTwoDp( vitalSignName: TranslationBase.of(context).oxygenSaturation,
// healthResult?.vitalSigns.hrvRmssd)), condition: RangeConditionWithTitle.fromJson(vital['Sp02']!, formatValueToTwoDp(healthResult?.vitalSigns.spo2)),
vitalSignValue: formatValueToTwoDp(healthResult?.vitalSigns.spo2),
vectorUrl: 'assets/images/svg/oxygen.svg',
),
if (_vitalSign?.respiratoryRate != null)
VitalSignWidget(
textColor: textColor,
lookupValues: vitalValues['respiratoryRate']!,
vitalSignName: TranslationBase.of(context).respiratoryRate,
condition: RangeConditionWithTitle.fromJson(vital['respiratoryRate']!, formatValueToTwoDp(healthResult?.vitalSigns.respiratoryRate)),
vitalSignValue: formatValueToTwoDp(healthResult?.vitalSigns.respiratoryRate),
vectorUrl: 'assets/images/svg/breathing.svg',
),
if (_holisticAnalysis != null && _holisticAnalysis?.bmi != null)
VitalSignWidget(
textColor: textColor,
lookupValues: vitalValues['bmi']!,
vitalSignName: TranslationBase.of(context).BMI,
condition: RangeConditionWithTitle.fromJson(vital['bmi']!, formatValueToTwoDp(healthResult?.holisticHealth?.bmi)),
vitalSignValue: formatValueToTwoDp(healthResult?.holisticHealth?.bmi),
vectorUrl: 'assets/images/svg/bmi.svg',
),
// VitalSignWidget(
// textColor: textColor,
// vitalSignName: "IBI",
// condition: RangeConditionWithTitle.fromJson(vital['HR']!),
// vitalSignValue:
// formatValueToTwoDp(healthResult?.vitalSigns.ibi)),
// if (_vitalSign?.temperature != null) // if (_vitalSign?.hrvRmssd != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Temperature", // vitalSignName: "HRV RMSSD",
// vitalSignValue: formatValueToTwoDp( // vitalSignValue: formatValueToTwoDp(
// healthResult?.vitalSigns.temperature)), // healthResult?.vitalSigns.hrvRmssd)),
// if (_vitalSign?.bloodPressureSystolic != null) // if (_vitalSign?.temperature != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Blood Pressure Systolic", // vitalSignName: "Temperature",
// vitalSignValue: formatValueToTwoDp(healthResult // vitalSignValue: formatValueToTwoDp(
// ?.vitalSigns.bloodPressureSystolic)), // healthResult?.vitalSigns.temperature)),
// if (_vitalSign?.bloodPressureDiastolic != null)
// VitalSignWidget(
// textColor: textColor,
// vitalSignName: "Blood Pressure Diastolic",
// vitalSignValue: formatValueToTwoDp(healthResult
// ?.vitalSigns.bloodPressureDiastolic)),
// if (_holisticAnalysis != null)
// Container(
// margin: const EdgeInsets.fromLTRB(0, 25, 0, 10),
// child: const Text(
// "Holistic Analysis",
// style: TextStyle(
// fontSize: 15,
// color: Colors.amber,
// fontWeight: FontWeight.bold,
// ),
// ),
// ),
// if (_vitalSign?.bloodPressureSystolic != null)
// VitalSignWidget(
// textColor: textColor,
// vitalSignName: "Blood Pressure Systolic",
// vitalSignValue: formatValueToTwoDp(healthResult
// ?.vitalSigns.bloodPressureSystolic)),
// if (_vitalSign?.bloodPressureDiastolic != null)
// VitalSignWidget(
// textColor: textColor,
// vitalSignName: "Blood Pressure Diastolic",
// vitalSignValue: formatValueToTwoDp(healthResult
// ?.vitalSigns.bloodPressureDiastolic)),
// if (_holisticAnalysis != null)
// Container(
// margin: const EdgeInsets.fromLTRB(0, 25, 0, 10),
// child: const Text(
// "Holistic Analysis",
// style: TextStyle(
// fontSize: 15,
// color: Colors.amber,
// fontWeight: FontWeight.bold,
// ),
// ),
// ),
// if (_holisticAnalysis != null && // if (_holisticAnalysis != null &&
// _holisticAnalysis?.absi != null) // _holisticAnalysis?.absi != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "ABSI", // vitalSignName: "ABSI",
// vitalSignValue: formatValueToTwoDp( // vitalSignValue: formatValueToTwoDp(
// healthResult?.holisticHealth?.absi)), // healthResult?.holisticHealth?.absi)),
// if (_holisticAnalysis != null && // if (_holisticAnalysis != null &&
// _holisticAnalysis?.cardiacWorkload != null) // _holisticAnalysis?.cardiacWorkload != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Cardiac Workload", // vitalSignName: "Cardiac Workload",
// vitalSignValue: formatValueToTwoDp( // vitalSignValue: formatValueToTwoDp(
// healthResult?.holisticHealth?.cardiacWorkload)), // healthResult?.holisticHealth?.cardiacWorkload)),
// if (_holisticAnalysis != null && // if (_holisticAnalysis != null &&
// _holisticAnalysis?.pulseRespiratoryQuotient != null) // _holisticAnalysis?.pulseRespiratoryQuotient != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Pulse Respiratory Quotient", // vitalSignName: "Pulse Respiratory Quotient",
// vitalSignValue: formatValueToTwoDp(healthResult // vitalSignValue: formatValueToTwoDp(healthResult
// ?.holisticHealth?.pulseRespiratoryQuotient)), // ?.holisticHealth?.pulseRespiratoryQuotient)),
// if (_holisticAnalysis != null && // if (_holisticAnalysis != null &&
// _holisticAnalysis?.waistToHeightRatio != null) // _holisticAnalysis?.waistToHeightRatio != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Waist to Height Ratio", // vitalSignName: "Waist to Height Ratio",
// vitalSignValue: formatValueToTwoDp(healthResult // vitalSignValue: formatValueToTwoDp(healthResult
// ?.holisticHealth?.waistToHeightRatio)), // ?.holisticHealth?.waistToHeightRatio)),
// if (_cardiovascularRisks != null) // if (_cardiovascularRisks != null)
// Container( // Container(
// margin: const EdgeInsets.fromLTRB(0, 25, 0, 10), // margin: const EdgeInsets.fromLTRB(0, 25, 0, 10),
// child: const Text( // child: const Text(
// "Cardiovascular Risks", // "Cardiovascular Risks",
// style: TextStyle( // style: TextStyle(
// fontSize: 15, // fontSize: 15,
// color: Colors.amber, // color: Colors.amber,
// fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
// ), // ),
// ), // ),
// ), // ),
// if (_cardiovascularRisks != null) // if (_cardiovascularRisks != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: TranslationBase.of(context).cvd, // vitalSignName: TranslationBase.of(context).cvd,
// condition: RangeConditionWithTitle.fromJson(vital['cvd']!, formatValueToTwoDp(healthResult // condition: RangeConditionWithTitle.fromJson(vital['cvd']!, formatValueToTwoDp(healthResult
// ?.risks?.cardiovascularRisks?.generalRisk)), // ?.risks?.cardiovascularRisks?.generalRisk)),
// vitalSignValue: formatValueToTwoDp(healthResult // vitalSignValue: formatValueToTwoDp(healthResult
// ?.risks?.cardiovascularRisks?.generalRisk), // ?.risks?.cardiovascularRisks?.generalRisk),
// vectorUrl: 'assets/images/svg/heartrate.svg',), // vectorUrl: 'assets/images/svg/heartrate.svg',),
// if (_cardiovascularRisks != null) // if (_cardiovascularRisks != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Congestive Heart Failure", // vitalSignName: "Congestive Heart Failure",
// vitalSignValue: formatValueToTwoDp(healthResult // vitalSignValue: formatValueToTwoDp(healthResult
// ?.risks // ?.risks
// ?.cardiovascularRisks // ?.cardiovascularRisks
// ?.congestiveHeartFailure)), // ?.congestiveHeartFailure)),
// if (_cardiovascularRisks != null) // if (_cardiovascularRisks != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Coronary Heart Disease", // vitalSignName: "Coronary Heart Disease",
// vitalSignValue: formatValueToTwoDp(healthResult // vitalSignValue: formatValueToTwoDp(healthResult
// ?.risks // ?.risks
// ?.cardiovascularRisks // ?.cardiovascularRisks
// ?.coronaryHeartDisease)), // ?.coronaryHeartDisease)),
// if (_cardiovascularRisks != null) // if (_cardiovascularRisks != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Intermittent Claudication", // vitalSignName: "Intermittent Claudication",
// vitalSignValue: formatValueToTwoDp(healthResult // vitalSignValue: formatValueToTwoDp(healthResult
// ?.risks // ?.risks
// ?.cardiovascularRisks // ?.cardiovascularRisks
// ?.intermittentClaudication)), // ?.intermittentClaudication)),
// if (_cardiovascularRisks != null) // if (_cardiovascularRisks != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Stroke", // vitalSignName: "Stroke",
// vitalSignValue: formatValueToTwoDp(healthResult // vitalSignValue: formatValueToTwoDp(healthResult
// ?.risks?.cardiovascularRisks?.stroke)), // ?.risks?.cardiovascularRisks?.stroke)),
// if (_covidRisk != null) // if (_covidRisk != null)
// Container( // Container(
// margin: const EdgeInsets.fromLTRB(0, 25, 0, 10), // margin: const EdgeInsets.fromLTRB(0, 25, 0, 10),
// child: const Text( // child: const Text(
// "Covid Risks", // "Covid Risks",
// style: TextStyle( // style: TextStyle(
// fontSize: 15, // fontSize: 15,
// color: Colors.amber, // color: Colors.amber,
// fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
// ), // ),
// ), // ),
// ), // ),
// if (_covidRisk != null) // if (_covidRisk != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Risk", // vitalSignName: "Risk",
// vitalSignValue: formatValueToTwoDp( // vitalSignValue: formatValueToTwoDp(
// healthResult?.risks?.covidRisk?.covidRisk)), // healthResult?.risks?.covidRisk?.covidRisk)),
// if (_scanParameters != null) // if (_scanParameters != null)
// Container( // Container(
// margin: const EdgeInsets.fromLTRB(0, 25, 0, 10), // margin: const EdgeInsets.fromLTRB(0, 25, 0, 10),
// child: const Text( // child: const Text(
// "Scan Parameters", // "Scan Parameters",
// style: TextStyle( // style: TextStyle(
// fontSize: 15, // fontSize: 15,
// color: Colors.amber, // color: Colors.amber,
// fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
// ), // ),
// ), // ),
// ), // ),
// if (_scanParameters != null) // if (_scanParameters != null)
// VitalSignWidget( // VitalSignWidget(
// textColor: textColor, // textColor: textColor,
// vitalSignName: "Signal Quality", // vitalSignName: "Signal Quality",
// vitalSignValue: formatValueToTwoDp( // vitalSignValue: formatValueToTwoDp(
// healthResult?.scanParameters?.signalQuality)), // healthResult?.scanParameters?.signalQuality)),
]), ]),
), ),
], ],
), ),

@ -105,8 +105,10 @@ class _VitalSignsState extends State<VitalSigns> with RouteAware {
body: Column( body: Column(
children: [ children: [
if (_conditions != null) if (_conditions != null)
Expanded( ScanConditionChecklist(
child: Stack( deviceSize: deviceSize, conditions: _conditions!),
Expanded(
child: Stack(
children: [ children: [
VitalSignCamera( VitalSignCamera(
onCreated: _onVitalSignCameraCreated, onCreated: _onVitalSignCameraCreated,
@ -311,4 +313,4 @@ class OvalOverlayPainter extends CustomPainter {
bool shouldRepaint(covariant CustomPainter oldDelegate) { bool shouldRepaint(covariant CustomPainter oldDelegate) {
return false; return false;
} }
} }

Loading…
Cancel
Save