Design fixes on Fold
parent
cb299c5bca
commit
7b1684c455
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,252 +0,0 @@
|
||||
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<HealthProvider>().sumOfNonEmptyData(context.read<HealthProvider>().vitals?.activity??[]),
|
||||
unitsOfMeasure: "Kcal"
|
||||
).onPress((){
|
||||
// Map<String, List<Vitals>> getVitals() {
|
||||
// return {
|
||||
// "heartRate": heartRate ,
|
||||
// "sleep": sleep,
|
||||
// "steps": step,
|
||||
// "activity": activity,
|
||||
// "bodyOxygen": bodyOxygen,
|
||||
// "bodyTemperature": bodyTemperature,
|
||||
// };
|
||||
// }
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("activity");
|
||||
context.read<HealthProvider>().saveSelectedSection("activity");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().navigateToDetails("activity", sectionName:"Activity Calories", uom: "Kcal");
|
||||
|
||||
}),
|
||||
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<HealthProvider>().sumOfNonEmptyData(context.read<HealthProvider>().vitals?.step??[]),
|
||||
unitsOfMeasure: "Steps"
|
||||
).onPress((){
|
||||
// Map<String, List<Vitals>> getVitals() {
|
||||
// return {
|
||||
// "heartRate": heartRate ,
|
||||
// "sleep": sleep,
|
||||
// "steps": step,
|
||||
// "activity": activity,
|
||||
// "bodyOxygen": bodyOxygen,
|
||||
// "bodyTemperature": bodyTemperature,
|
||||
// };
|
||||
// }
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("steps");
|
||||
context.read<HealthProvider>().saveSelectedSection("steps");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().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<HealthProvider>().sumOfNonEmptyData(context.read<HealthProvider>().vitals?.distance??[]),
|
||||
unitsOfMeasure: "Km"
|
||||
).onPress((){
|
||||
// Map<String, List<Vitals>> getVitals() {
|
||||
// return {
|
||||
// "heartRate": heartRate ,
|
||||
// "sleep": sleep,
|
||||
// "steps": step,
|
||||
// "activity": activity,
|
||||
// "bodyOxygen": bodyOxygen,
|
||||
// "bodyTemperature": bodyTemperature,
|
||||
// };
|
||||
// }
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("distance");
|
||||
context.read<HealthProvider>().saveSelectedSection("distance");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().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<HealthProvider>().firstNonEmptyValue(context.read<HealthProvider>().vitals?.sleep??[]))).split(" ")[0],
|
||||
unitsOfMeasure: "hr",
|
||||
resultSecondValue: DateUtil.millisToHourMin(int.parse(context.read<HealthProvider>().firstNonEmptyValue(context.read<HealthProvider>().vitals?.sleep??[]))).split(" ")[2],
|
||||
unitOfSecondMeasure: "min"
|
||||
).onPress((){
|
||||
// Map<String, List<Vitals>> getVitals() {
|
||||
// return {
|
||||
// "heartRate": heartRate ,
|
||||
// "sleep": sleep,
|
||||
// "steps": step,
|
||||
// "activity": activity,
|
||||
// "bodyOxygen": bodyOxygen,
|
||||
// "bodyTemperature": bodyTemperature,
|
||||
// };
|
||||
// }
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("sleep");
|
||||
context.read<HealthProvider>().saveSelectedSection("sleep");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().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<HealthProvider>().firstNonEmptyValue(context.read<HealthProvider>().vitals?.bodyOxygen??[], ),
|
||||
unitsOfMeasure: "%"
|
||||
).onPress((){
|
||||
// Map<String, List<Vitals>> getVitals() {
|
||||
// return {
|
||||
// "heartRate": heartRate ,
|
||||
// "sleep": sleep,
|
||||
// "steps": step,
|
||||
// "activity": activity,
|
||||
// "bodyOxygen": bodyOxygen,
|
||||
// "bodyTemperature": bodyTemperature,
|
||||
// };
|
||||
// }
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("bodyOxygen");
|
||||
context.read<HealthProvider>().saveSelectedSection("bodyOxygen");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().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<HealthProvider>().firstNonEmptyValue(context.read<HealthProvider>().vitals?.bodyTemperature??[]),
|
||||
unitsOfMeasure: "C"
|
||||
).onPress((){
|
||||
// Map<String, List<Vitals>> getVitals() {
|
||||
// return {
|
||||
// "heartRate": heartRate ,
|
||||
// "sleep": sleep,
|
||||
// "steps": step,
|
||||
// "activity": activity,
|
||||
// "bodyOxygen": bodyOxygen,
|
||||
// "bodyTemperature": bodyTemperature,
|
||||
// };
|
||||
// }
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("bodyTemperature");
|
||||
context.read<HealthProvider>().saveSelectedSection("bodyTemperature");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().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(isBold: true, color: AppColors.greyTextColor),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.baseline,
|
||||
textBaseline: TextBaseline.alphabetic,
|
||||
spacing: 2.h,
|
||||
children: [
|
||||
result.toText21(isBold: true, color: AppColors.textColor),
|
||||
unitsOfMeasure.toText10(isBold: true, 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(isBold: true, color: AppColors.textColor),
|
||||
unitOfSecondMeasure!.toText10(isBold: true, color:AppColors.greyTextColor )
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
|
||||
],
|
||||
) ,
|
||||
),
|
||||
Utils.buildSvgWithAssets(icon: trailingIcon, width: 72.w, height: 72.h),
|
||||
],
|
||||
).paddingSymmetrical(16.w, 16.h)
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,188 @@
|
||||
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/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_data_transformations.dart' as durations;
|
||||
import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_provider.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 '../../core/utils/date_util.dart' show DateUtil;
|
||||
|
||||
class SmartWatchesHealthDataScreen extends StatelessWidget {
|
||||
const SmartWatchesHealthDataScreen({super.key});
|
||||
|
||||
@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<HealthProvider>().sumOfNonEmptyData(context.read<HealthProvider>().vitals?.activity ?? []),
|
||||
unitsOfMeasure: "Kcal")
|
||||
.onPress(() {
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("activity");
|
||||
context.read<HealthProvider>().saveSelectedSection("activity");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().navigateToDetails("activity", sectionName: "Activity Calories", uom: "Kcal");
|
||||
}),
|
||||
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<HealthProvider>().sumOfNonEmptyData(context.read<HealthProvider>().vitals?.step ?? []),
|
||||
unitsOfMeasure: "Steps")
|
||||
.onPress(() {
|
||||
// Map<String, List<Vitals>> getVitals() {
|
||||
// return {
|
||||
// "heartRate": heartRate ,
|
||||
// "sleep": sleep,
|
||||
// "steps": step,
|
||||
// "activity": activity,
|
||||
// "bodyOxygen": bodyOxygen,
|
||||
// "bodyTemperature": bodyTemperature,
|
||||
// };
|
||||
// }
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("steps");
|
||||
context.read<HealthProvider>().saveSelectedSection("steps");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().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<HealthProvider>().sumOfNonEmptyData(context.read<HealthProvider>().vitals?.distance ?? []),
|
||||
unitsOfMeasure: "Km")
|
||||
.onPress(() {
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("distance");
|
||||
context.read<HealthProvider>().saveSelectedSection("distance");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().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<HealthProvider>().firstNonEmptyValue(context.read<HealthProvider>().vitals?.sleep ?? [])))
|
||||
.split(" ")[0],
|
||||
unitsOfMeasure: "hr",
|
||||
resultSecondValue: DateUtil.millisToHourMin(
|
||||
int.parse(context.read<HealthProvider>().firstNonEmptyValue(context.read<HealthProvider>().vitals?.sleep ?? [])))
|
||||
.split(" ")[2],
|
||||
unitOfSecondMeasure: "min")
|
||||
.onPress(() {
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("sleep");
|
||||
context.read<HealthProvider>().saveSelectedSection("sleep");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().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<HealthProvider>().firstNonEmptyValue(
|
||||
context.read<HealthProvider>().vitals?.bodyOxygen ?? [],
|
||||
),
|
||||
unitsOfMeasure: "%")
|
||||
.onPress(() {
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("bodyOxygen");
|
||||
context.read<HealthProvider>().saveSelectedSection("bodyOxygen");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().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<HealthProvider>().firstNonEmptyValue(context.read<HealthProvider>().vitals?.bodyTemperature ?? []),
|
||||
unitsOfMeasure: "C")
|
||||
.onPress(() {
|
||||
context.read<HealthProvider>().setDurations(durations.Durations.daily);
|
||||
context.read<HealthProvider>().deleteDataIfSectionIsDifferent("bodyTemperature");
|
||||
context.read<HealthProvider>().saveSelectedSection("bodyTemperature");
|
||||
context.read<HealthProvider>().fetchData();
|
||||
context.read<HealthProvider>().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(isBold: true, color: AppColors.greyTextColor),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.baseline,
|
||||
textBaseline: TextBaseline.alphabetic,
|
||||
spacing: 2.h,
|
||||
children: [
|
||||
result.toText21(isBold: true, color: AppColors.textColor),
|
||||
unitsOfMeasure.toText10(isBold: true, color: AppColors.greyTextColor),
|
||||
if (resultSecondValue != null)
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.baseline,
|
||||
textBaseline: TextBaseline.alphabetic,
|
||||
spacing: 2.h,
|
||||
children: [
|
||||
SizedBox(width: 2.w),
|
||||
resultSecondValue.toText21(isBold: true, color: AppColors.textColor),
|
||||
unitOfSecondMeasure!.toText10(isBold: true, color: AppColors.greyTextColor)
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Utils.buildSvgWithAssets(icon: trailingIcon, width: 72.w, height: 72.h),
|
||||
],
|
||||
).paddingSymmetrical(16.w, 16.h));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue