From 67c472bbe23f9c7a286fb02ac7d2d0fce702060b Mon Sep 17 00:00:00 2001 From: "taha.alam" Date: Thu, 23 Jan 2025 17:52:10 +0300 Subject: [PATCH] WIP: changes on vital sign screen --- assets/images/svg/overlay.svg | 122 +++++++++++++++++ .../components/scan_condition_checklist.dart | 128 +++++++++--------- lib/vital_signs/components/start_button.dart | 8 +- .../components/vital_sign_widget.dart | 6 +- lib/vital_signs/vital_sign.dart | 37 ++--- 5 files changed, 215 insertions(+), 86 deletions(-) create mode 100644 assets/images/svg/overlay.svg diff --git a/assets/images/svg/overlay.svg b/assets/images/svg/overlay.svg new file mode 100644 index 00000000..af3aab05 --- /dev/null +++ b/assets/images/svg/overlay.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/vital_signs/components/scan_condition_checklist.dart b/lib/vital_signs/components/scan_condition_checklist.dart index 9c850bd0..a468426c 100644 --- a/lib/vital_signs/components/scan_condition_checklist.dart +++ b/lib/vital_signs/components/scan_condition_checklist.dart @@ -2,6 +2,7 @@ import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:flutter/material.dart'; import 'package:vital_sign_camera/vital_sign_camera.dart'; + import 'scan_condition.dart'; class ScanConditionChecklist extends StatelessWidget { @@ -19,71 +20,76 @@ class ScanConditionChecklist extends StatelessWidget { Widget build(BuildContext context) { return SizedBox( height: deviceSize.width*0.4, - child: Material( - color:Colors.white, - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - TranslationBase.of(context).scanningConditions, - style: TextStyle( - fontSize: 15, - color: CustomColors.accentColor, - fontWeight: FontWeight.bold, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Material( + color: Colors.black.withOpacity(.4), + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + TranslationBase.of(context).scanningConditions, + style: TextStyle( + fontSize: 15, + color: CustomColors.accentColor, + fontWeight: FontWeight.bold, + ), ), - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 10, 0, 0), - child: Row( - children: [ - Expanded( - child: Column( - children: [ - ScanCondition( - scanConditionName: - TranslationBase.of(context).lighting , - isConditionSatisfied: conditions.lighting, - ), - ScanCondition( - scanConditionName: - TranslationBase.of(context).distance, - isConditionSatisfied: conditions.distance, - ), - ScanCondition( - scanConditionName: - TranslationBase.of(context).centered, - - isConditionSatisfied: conditions.centered, - ), - ], + Padding( + padding: const EdgeInsets.fromLTRB(0, 10, 0, 0), + child: Row( + children: [ + Expanded( + child: Column( + children: [ + ScanCondition( + scanConditionName: + TranslationBase.of(context).lighting, + isConditionSatisfied: conditions.lighting, + ), + ScanCondition( + scanConditionName: + TranslationBase.of(context).distance, + isConditionSatisfied: conditions.distance, + ), + ScanCondition( + scanConditionName: + TranslationBase.of(context).centered, + isConditionSatisfied: conditions.centered, + ), + ], + ), ), - ), - - Expanded( - child: Column( - children: [ - ScanCondition( - scanConditionName: TranslationBase.of(context).movement, - isConditionSatisfied: conditions.movement, - ), - ScanCondition( - scanConditionName: TranslationBase.of(context).frameRate, - isConditionSatisfied: conditions.frameRate, - ), - ScanCondition( - scanConditionName: TranslationBase.of(context).serverReady, - isConditionSatisfied: conditions.serverReady, - ), - ], + Expanded( + child: Column( + children: [ + ScanCondition( + scanConditionName: + TranslationBase.of(context).movement, + isConditionSatisfied: conditions.movement, + ), + ScanCondition( + scanConditionName: + TranslationBase.of(context).frameRate, + isConditionSatisfied: conditions.frameRate, + ), + ScanCondition( + scanConditionName: + TranslationBase.of(context).serverReady, + isConditionSatisfied: conditions.serverReady, + ), + ], + ), ), - ), - - ], + ], + ), ), - ), - ], + ], + ), ), ), ), diff --git a/lib/vital_signs/components/start_button.dart b/lib/vital_signs/components/start_button.dart index f070412c..6a970f49 100644 --- a/lib/vital_signs/components/start_button.dart +++ b/lib/vital_signs/components/start_button.dart @@ -14,14 +14,12 @@ class StartButton extends StatelessWidget { @override Widget build(BuildContext context) { - return Align( - alignment: Alignment.bottomRight, - child: Padding( - padding: const EdgeInsets.only(right: 16.0, bottom: 32), + return Padding( + padding: const EdgeInsets.only(right: 16.0, bottom: 32), + child: Expanded( child: ElevatedButton( onPressed: (disabled) ? () {} : onPressed, style: ElevatedButton.styleFrom( - fixedSize: const Size(100, 70), shape: const CircleBorder(), backgroundColor: (disabled) ? Colors.grey : CustomColors.accentColor, elevation: 8, diff --git a/lib/vital_signs/components/vital_sign_widget.dart b/lib/vital_signs/components/vital_sign_widget.dart index a77c6ee7..2dc6d625 100644 --- a/lib/vital_signs/components/vital_sign_widget.dart +++ b/lib/vital_signs/components/vital_sign_widget.dart @@ -1,6 +1,5 @@ import 'package:diplomaticquarterapp/theme/colors.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:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -368,7 +367,8 @@ class Status extends StatelessWidget { originalData.toLowerCase() == 'excellent' || originalData.toLowerCase() == 'normal') ? Color(0xFFD8E8DB) - : (originalData.toLowerCase() == 'poor' || originalData.toLowerCase() == 'low') + : (originalData.toLowerCase() == 'poor' || + originalData.toLowerCase() == 'atRisk') ? Color(0xFFD3D37E) : Color(0x98d02127), child: Padding( @@ -380,7 +380,7 @@ class Status extends StatelessWidget { originalData.toLowerCase() == 'normal') ? Color(0xFF359846) : (originalData.toLowerCase() == 'poor' || - originalData.toLowerCase() == 'low') + originalData.toLowerCase() == 'atRisk') ? Colors.white : Colors.white, fontSize: 8, diff --git a/lib/vital_signs/vital_sign.dart b/lib/vital_signs/vital_sign.dart index e297bd59..e2312875 100644 --- a/lib/vital_signs/vital_sign.dart +++ b/lib/vital_signs/vital_sign.dart @@ -1,16 +1,14 @@ import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; import 'package:vital_sign_camera/vital_sign_camera.dart'; + // import 'package:wakelock/wakelock.dart'; import '../uitl/translations_delegate_base.dart'; -import 'components/bounding_box_widget.dart'; -import 'components/error.dart'; import 'components/scan_condition_checklist.dart'; import 'components/scan_status.dart'; import 'components/start_button.dart'; -import 'components/back_button.dart'; -import 'components/button.dart'; import 'result_screen.dart'; final UserInfo userInfo = UserInfo( @@ -107,10 +105,8 @@ class _VitalSignsState extends State with RouteAware { body: Column( children: [ if (_conditions != null) - ScanConditionChecklist( - deviceSize: deviceSize, conditions: _conditions!), - Expanded( - child: Stack( + Expanded( + child: Stack( children: [ VitalSignCamera( onCreated: _onVitalSignCameraCreated, @@ -120,18 +116,24 @@ class _VitalSignsState extends State with RouteAware { device: cameraDevice, onVideoFrameProcessed: _onVideoFrameProcessed), Positioned.fill( - child: CustomPaint( - painter: OvalOverlayPainter(), + // child: CustomPaint( + // painter: OvalOverlayPainter(), + // ), + child: SvgPicture.asset( + "assets/images/svg/overlay.svg", + ), ), - ), if (_scanningStage != GetHealthStage .idle) // show remaining time count down during scan ScanStatus( stage: _scanningStage, remainingTime: _remainingTime), - if (_scanningStage == GetHealthStage.idle && - isCameraActive) // show start button only when it is not scanning - StartButton( + Column(children: [ + ScanConditionChecklist( + deviceSize: deviceSize, conditions: _conditions!), + if (_scanningStage == GetHealthStage.idle && + isCameraActive) // show start button only when it is not scanning + StartButton( onPressed: () { setState(() { _vitalSignCameraController.startScanning(); @@ -141,9 +143,10 @@ class _VitalSignsState extends State with RouteAware { }); }, disabled: !isAllConditionsMet, - ), - ], - ), + ), + ]) + ], + ), ), ], ),