diff --git a/lib/common_widget/container/container_stats.dart b/lib/common_widget/container/container_stats.dart index c18f603..ff2ddbb 100644 --- a/lib/common_widget/container/container_stats.dart +++ b/lib/common_widget/container/container_stats.dart @@ -1,17 +1,20 @@ import 'package:flutter/material.dart'; +import 'package:smartfit_app_mobile/common/colo_extension.dart'; +import 'package:smartfit_app_mobile/common_widget/stats.dart'; class ContainerStats extends StatelessWidget { - const ContainerStats(this.value, this.designation, {Key? key}) + const ContainerStats(this.value, this.designation, this.icon, {Key? key}) : super(key: key); final String value; final String designation; + final IconData icon; @override Widget build(BuildContext context) { return Container( - height: 110, - width: 110, + height: 100, + width: 100, padding: const EdgeInsets.all(8), margin: const EdgeInsets.symmetric(vertical: 5), decoration: BoxDecoration( @@ -29,6 +32,11 @@ class ContainerStats extends StatelessWidget { ]), child: Stack( children: [ + StatIcon( + icon: icon, + iconColor: TColor.white, + iconBackground: TColor.secondaryColor1, + ), Align( alignment: Alignment.bottomLeft, child: Column( diff --git a/lib/common_widget/container/ligne_container_stats.dart b/lib/common_widget/container/ligne_container_stats.dart index 96e35e8..3f536ff 100644 --- a/lib/common_widget/container/ligne_container_stats.dart +++ b/lib/common_widget/container/ligne_container_stats.dart @@ -1,9 +1,11 @@ import 'package:flutter/material.dart'; +import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common_widget/container/container_stats.dart'; class LigneContainerStats extends StatelessWidget { const LigneContainerStats(this.value1, this.value2, this.value3, this.designation1, this.designation2, this.designation3, + this.icon1, this.icon2, this.icon3, {Key? key}) : super(key: key); @@ -15,17 +17,55 @@ class LigneContainerStats extends StatelessWidget { final String designation2; final String designation3; + final IconData icon1; + final IconData icon2; + final IconData icon3; + + @override Widget build(BuildContext context) { - return Row( + return Column( children: [ + Divider(height: 30), + + Padding( + padding: const EdgeInsets.symmetric(horizontal: 30), + child: Row( + children: [ + const Text( + 'Statistiques', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w800, + ), + ), + SizedBox(width: 8), + Icon( + Icons.pie_chart_rounded, + size: 15, + color: TColor.secondaryColor1, + ), + ], + ), + ), + + SizedBox(height: 20), + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child:Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ContainerStats(value1, designation1, icon1), const SizedBox(width: 20), - ContainerStats(value1, designation1), - const SizedBox(width: 20), - ContainerStats(value2, designation2), + ContainerStats(value2, designation2, icon2), const SizedBox(width: 20), - ContainerStats(value3, designation3), + ContainerStats(value3, designation3, icon3), + ],) + ), + Divider(height: 30), ], ); + + } } diff --git a/lib/common_widget/graph/bpm_by_time.dart b/lib/common_widget/graph/bpm_by_time.dart index 928f67b..5be0ab6 100644 --- a/lib/common_widget/graph/bpm_by_time.dart +++ b/lib/common_widget/graph/bpm_by_time.dart @@ -80,7 +80,7 @@ class _GraphBpmByTime extends State { return ClipRRect( borderRadius: BorderRadius.circular(25), child: Container( - height: media.width * 0.2, + height: media.height * 0.3, width: double.maxFinite, decoration: BoxDecoration( color: TColor.primaryColor2.withOpacity(0.3), diff --git a/lib/common_widget/stats.dart b/lib/common_widget/stats.dart index 977eb0b..2fcb512 100644 --- a/lib/common_widget/stats.dart +++ b/lib/common_widget/stats.dart @@ -45,7 +45,7 @@ class Stats extends StatelessWidget { scrollDirection: Axis.horizontal, child: Row( children: [ - const SizedBox(width: 30), + const SizedBox(width: 15), InfoStat( icon: Icons.timer, iconColor: Color.fromARGB(255, 255, 255, 255), @@ -126,7 +126,6 @@ class InfoStat extends StatelessWidget { iconColor: iconColor, iconBackground: iconBackground, ), - Change(time: time), Align( alignment: Alignment.bottomLeft, child: Column( @@ -153,35 +152,7 @@ class InfoStat extends StatelessWidget { } } -class Change extends StatelessWidget { - const Change({ - Key? key, - required this.time, - }) : super(key: key); - final String time; - - @override - Widget build(BuildContext context) { - return Align( - alignment: Alignment.topRight, - child: Container( - padding: const EdgeInsets.symmetric( - vertical: 1, - horizontal: 4, - ), - decoration: BoxDecoration( - color: Colors.green, - borderRadius: BorderRadius.circular(500), - ), - child: Text( - time, - style: const TextStyle(fontSize: 10, color: Colors.white), - ), - ), - ); - } -} class StatIcon extends StatelessWidget { const StatIcon({ diff --git a/lib/modele/activity.dart b/lib/modele/activity.dart index 569adde..bb525cb 100644 --- a/lib/modele/activity.dart +++ b/lib/modele/activity.dart @@ -97,6 +97,32 @@ class ActivityOfUser { return "null"; } + String getMaxBpm() { + for (int i = 0; i < _contentActivity[_dataSession].length; i++) { + if (_contentActivity[_dataSession][i] == "max_heart_rate") { + return _contentActivity[_dataSession][i + 1].toString(); + } + } + return "null"; + } + String getMinBpm() { + for (int i = 0; i < _contentActivity[_dataSession].length; i++) { + if (_contentActivity[_dataSession][i] == "min_heart_rate") { + return _contentActivity[_dataSession][i + 1].toString(); + } + } + return "null"; + } + + String getAvgBpm() { + for (int i = 0; i < _contentActivity[_dataSession].length; i++) { + if (_contentActivity[_dataSession][i] == "avg_heart_rate") { + return _contentActivity[_dataSession][i + 1].toString(); + } + } + return "null"; + } + String getTotalCalorie() { for (int i = 0; i < _contentActivity[_dataSession].length; i++) { if (_contentActivity[_dataSession][i] == "total_calories") { diff --git a/lib/view/activity/web/web_list_activity.dart b/lib/view/activity/web/web_list_activity.dart index c12dc8a..3d7cc62 100644 --- a/lib/view/activity/web/web_list_activity.dart +++ b/lib/view/activity/web/web_list_activity.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/material.dart'; +import 'package:universal_html/html.dart' as html; import 'package:crypto/crypto.dart'; import 'package:file_picker/file_picker.dart'; diff --git a/lib/view/home/mobile/mobile_homeview.dart b/lib/view/home/mobile/mobile_homeview.dart index 46e0ed9..9fd8957 100644 --- a/lib/view/home/mobile/mobile_homeview.dart +++ b/lib/view/home/mobile/mobile_homeview.dart @@ -1,11 +1,13 @@ import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:smartfit_app_mobile/common_widget/container/ligne_container_stats.dart'; import 'package:smartfit_app_mobile/common_widget/graph/altitude_by_time.dart'; import 'package:smartfit_app_mobile/common_widget/graph/bpm_and_speed_by_time.dart'; import 'package:smartfit_app_mobile/common_widget/graph/bpm_by_time.dart'; import 'package:smartfit_app_mobile/common_widget/other/entete_home_view.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart'; +import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart'; import 'package:smartfit_app_mobile/modele/utile/home_view/home_view_util.dart'; @@ -23,7 +25,9 @@ class _MobileHomeView extends State { @override Widget build(BuildContext context) { var media = MediaQuery.of(context).size; - + String maxBpm = context.watch().listActivity[0].getMaxBpm(); + String minBpm = context.watch().listActivity[0].getMinBpm(); + String avgBpm = context.watch().listActivity[0].getAvgBpm(); data = HomeViewUtil().initData(context); return Scaffold( @@ -53,7 +57,16 @@ class _MobileHomeView extends State { SizedBox( height: media.width * 0.05, ), - const LigneContainerStats("1", "2", "3", "s", "s", "s"), + LigneContainerStats( + minBpm + " BPM", + maxBpm + " BPM", + avgBpm + " BPM", + "Minimum", + "Maximum", + "Moyenne", + Icons.trending_down, + Icons.trending_up, + Icons.favorite_outline), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ diff --git a/lib/view/home/web/web_homeview.dart b/lib/view/home/web/web_homeview.dart index 79e6008..943b35f 100644 --- a/lib/view/home/web/web_homeview.dart +++ b/lib/view/home/web/web_homeview.dart @@ -1,11 +1,13 @@ import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; import 'package:smartfit_app_mobile/common_widget/container/ligne_container_stats.dart'; import 'package:smartfit_app_mobile/common_widget/graph/altitude_by_time.dart'; import 'package:smartfit_app_mobile/common_widget/graph/bpm_and_speed_by_time.dart'; import 'package:smartfit_app_mobile/common_widget/graph/bpm_by_time.dart'; import 'package:smartfit_app_mobile/common_widget/other/entete_home_view.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart'; +import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart'; import 'package:smartfit_app_mobile/modele/utile/home_view/home_view_util.dart'; @@ -20,12 +22,16 @@ class _WebHomeView extends State { late DataHomeView data; TextEditingController bpmController = TextEditingController(); + @override Widget build(BuildContext context) { var media = MediaQuery.of(context).size; + String maxBpm = context.watch().listActivity[0].getMaxBpm(); + String minBpm = context.watch().listActivity[0].getMinBpm(); + String avgBpm = context.watch().listActivity[0].getAvgBpm(); data = HomeViewUtil().initData(context); - + return Scaffold( backgroundColor: TColor.white, body: SingleChildScrollView( @@ -56,7 +62,8 @@ class _WebHomeView extends State { SizedBox( height: media.width * 0.05, ), - const LigneContainerStats("1", "2", "3", "s", "s", "s"), + + LigneContainerStats(minBpm+ " BPM",maxBpm+ " BPM" ,avgBpm+ " BPM", "Minimum", "Maximum", "Moyenne", Icons.trending_down,Icons.trending_up,Icons.favorite_outline), SizedBox( height: media.width * 0.05, ), @@ -79,7 +86,8 @@ class _WebHomeView extends State { SizedBox( height: media.width * 0.05, ), - const LigneContainerStats("1", "2", "3", "s", "s", "s"), + const LigneContainerStats("30 BPM", "90 BPM", "290 BPM", "Minimum", "Maximum", "Moyenne", Icons.trending_down,Icons.trending_up,Icons.favorite_outline), + SizedBox( height: media.width * 0.05, ), diff --git a/lib/view/ne_pas_supprimer/home_view.txt b/lib/view/ne_pas_supprimer/home_view.txt index f89fb10..0cb05f6 100644 --- a/lib/view/ne_pas_supprimer/home_view.txt +++ b/lib/view/ne_pas_supprimer/home_view.txt @@ -264,7 +264,7 @@ class _MobileHomeView extends State { title: "Voir", type: RoundButtonType.bgGradient, fontSize: 12, - fontWeight: FontWeight.w400, + fontWeight: FontWeight.w0, onPressed: () { Navigator.push( context, diff --git a/pubspec.yaml b/pubspec.yaml index 7c9fbd9..8581686 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -55,6 +55,7 @@ dependencies: tuple: ^2.0.2 crypto: ^3.0.3 responsive_builder: ^0.7.0 + universal_html: ^2.2.4 dev_dependencies: flutter_test: