import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_provider.dart'; import 'package:hmg_patient_app_new/presentation/smartwatches/activity_detail.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/HealthDataTransformation.dart' as durations; import '../../core/utils/date_util.dart' show DateUtil; class SmartWatchActivity extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( title: "All Health Data".needTranslation, child: Column( spacing: 16.h, children: [ resultItem( leadingIcon: AppAssets.watchActivity, title: "Activity Calories".needTranslation, description: "Activity rings give you a quick visual reference of how active you are each day. ".needTranslation, trailingIcon: AppAssets.watchActivityTrailing, result: context.read().sumOfNonEmptyData(context.read().vitals?.activity??[]), unitsOfMeasure: "Cal" ).onPress((){ // Map> getVitals() { // return { // "heartRate": heartRate , // "sleep": sleep, // "steps": step, // "activity": activity, // "bodyOxygen": bodyOxygen, // "bodyTemperature": bodyTemperature, // }; // } context.read().setDurations(durations.Durations.daily); context.read().deleteDataIfSectionIsDifferent("activity"); context.read().saveSelectedSection("activity"); context.read().fetchData(); context.read().navigateToDetails("activity", sectionName:"Activity Calories", uom: "cal"); }), resultItem( leadingIcon: AppAssets.watchSteps, title: "Steps".needTranslation, description: "Step count is the number of steps you take throughout the day.".needTranslation, trailingIcon: AppAssets.watchStepsTrailing, result: context.read().sumOfNonEmptyData(context.read().vitals?.step??[]), unitsOfMeasure: "Steps" ).onPress((){ // Map> getVitals() { // return { // "heartRate": heartRate , // "sleep": sleep, // "steps": step, // "activity": activity, // "bodyOxygen": bodyOxygen, // "bodyTemperature": bodyTemperature, // }; // } context.read().setDurations(durations.Durations.daily); context.read().deleteDataIfSectionIsDifferent("steps"); context.read().saveSelectedSection("steps"); context.read().fetchData(); context.read().navigateToDetails("steps", sectionName: "Steps", uom: "Steps"); }), resultItem( leadingIcon: AppAssets.watchSteps, title: "Distance Covered".needTranslation, description: "Step count is the distance you take throughout the day.".needTranslation, trailingIcon: AppAssets.watchStepsTrailing, result: context.read().sumOfNonEmptyData(context.read().vitals?.distance??[]), unitsOfMeasure: "Km" ).onPress((){ // Map> getVitals() { // return { // "heartRate": heartRate , // "sleep": sleep, // "steps": step, // "activity": activity, // "bodyOxygen": bodyOxygen, // "bodyTemperature": bodyTemperature, // }; // } context.read().setDurations(durations.Durations.daily); context.read().deleteDataIfSectionIsDifferent("distance"); context.read().saveSelectedSection("distance"); context.read().fetchData(); context.read().navigateToDetails("distance", sectionName: "Distance Covered", uom: "km"); }), resultItem( leadingIcon: AppAssets.watchSleep, title: "Sleep Score".needTranslation, description: "This will keep track of how much hours you sleep in a day".needTranslation, trailingIcon: AppAssets.watchSleepTrailing, result: DateUtil.millisToHourMin(int.parse(context.read().firstNonEmptyValue(context.read().vitals?.sleep??[]))).split(" ")[0], unitsOfMeasure: "hr", resultSecondValue: DateUtil.millisToHourMin(int.parse(context.read().firstNonEmptyValue(context.read().vitals?.sleep??[]))).split(" ")[2], unitOfSecondMeasure: "min" ).onPress((){ // Map> getVitals() { // return { // "heartRate": heartRate , // "sleep": sleep, // "steps": step, // "activity": activity, // "bodyOxygen": bodyOxygen, // "bodyTemperature": bodyTemperature, // }; // } context.read().setDurations(durations.Durations.daily); context.read().deleteDataIfSectionIsDifferent("sleep"); context.read().saveSelectedSection("sleep"); context.read().fetchData(); context.read().navigateToDetails("sleep", sectionName:"Sleep Score",uom:""); }), resultItem( leadingIcon: AppAssets.watchWeight, title: "Blood Oxygen".needTranslation, description: "This will calculate your Blood Oxygen to keep track and update history".needTranslation, trailingIcon: AppAssets.watchWeightTrailing, result: context.read().firstNonEmptyValue(context.read().vitals?.bodyOxygen??[], ), unitsOfMeasure: "%" ).onPress((){ // Map> getVitals() { // return { // "heartRate": heartRate , // "sleep": sleep, // "steps": step, // "activity": activity, // "bodyOxygen": bodyOxygen, // "bodyTemperature": bodyTemperature, // }; // } context.read().setDurations(durations.Durations.daily); context.read().deleteDataIfSectionIsDifferent("bodyOxygen"); context.read().saveSelectedSection("bodyOxygen"); context.read().fetchData(); context.read().navigateToDetails("bodyOxygen", uom: "%", sectionName:"Blood Oxygen" ); }), resultItem( leadingIcon: AppAssets.watchWeight, title: "Body temperature".needTranslation, description: "This will calculate your Body temprerature to keep track and update history".needTranslation, trailingIcon: AppAssets.watchWeightTrailing, result: context.read().firstNonEmptyValue(context.read().vitals?.bodyTemperature??[]), unitsOfMeasure: "C" ).onPress((){ // Map> getVitals() { // return { // "heartRate": heartRate , // "sleep": sleep, // "steps": step, // "activity": activity, // "bodyOxygen": bodyOxygen, // "bodyTemperature": bodyTemperature, // }; // } context.read().setDurations(durations.Durations.daily); context.read().deleteDataIfSectionIsDifferent("bodyTemperature"); context.read().saveSelectedSection("bodyTemperature"); context.read().fetchData(); context.read().navigateToDetails("bodyTemperature" , sectionName: "Body temperature".capitalizeFirstofEach, uom: "C"); }), ], ).paddingSymmetrical(24.w, 24.h), )); } Widget resultItem({ required String leadingIcon, required String title, required String description, required String trailingIcon, required String result, required String unitsOfMeasure, String? resultSecondValue, String? unitOfSecondMeasure }) { return DecoratedBox( decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), child: Row( spacing: 16.w, children: [ Expanded( child:Column( spacing: 8.h, children: [ Row( spacing: 8.w, children: [ Utils.buildSvgWithAssets(icon: leadingIcon, height: 16.h, width: 14.w), title.toText16( weight: FontWeight.w600, color: AppColors.textColor), ], ), description.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), Row( crossAxisAlignment: CrossAxisAlignment.baseline, textBaseline: TextBaseline.alphabetic, spacing: 2.h, children: [ result.toText21(weight: FontWeight.w600, color: AppColors.textColor), unitsOfMeasure.toText10(weight: FontWeight.w500, color:AppColors.greyTextColor ), if(resultSecondValue != null) Visibility( visible: resultSecondValue != null , child: Row( crossAxisAlignment: CrossAxisAlignment.baseline, textBaseline: TextBaseline.alphabetic, spacing: 2.h, children: [ SizedBox(width: 2.w,), resultSecondValue.toText21(weight: FontWeight.w600, color: AppColors.textColor), unitOfSecondMeasure!.toText10(weight: FontWeight.w500, color:AppColors.greyTextColor ) ], ), ) ], ), ], ) , ), Utils.buildSvgWithAssets(icon: trailingIcon, width: 72.w, height: 72.h), ], ).paddingSymmetrical(16.w, 16.h) ); } }