From f37e74f6b76225083571b9bc4a53d794cae2372a Mon Sep 17 00:00:00 2001 From: otbenjello Date: Mon, 20 Nov 2023 08:54:34 +0100 Subject: [PATCH 1/3] ajout stats responsive --- .../container/container_stats.dart | 10 +++- .../container/ligne_container_stats.dart | 48 ++++++++++++++++--- lib/view/home/web/web_homeview.dart | 4 +- 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/lib/common_widget/container/container_stats.dart b/lib/common_widget/container/container_stats.dart index c18f603..e5ce6f0 100644 --- a/lib/common_widget/container/container_stats.dart +++ b/lib/common_widget/container/container_stats.dart @@ -1,11 +1,14 @@ 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) { @@ -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..e294767 100644 --- a/lib/common_widget/container/ligne_container_stats.dart +++ b/lib/common_widget/container/ligne_container_stats.dart @@ -1,4 +1,5 @@ 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 { @@ -17,15 +18,48 @@ class LigneContainerStats extends StatelessWidget { @override Widget build(BuildContext context) { - return Row( + return Column( children: [ - const SizedBox(width: 20), - ContainerStats(value1, designation1), - const SizedBox(width: 20), - ContainerStats(value2, designation2), - const SizedBox(width: 20), - ContainerStats(value3, designation3), + 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), + + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox(width: 25), + ContainerStats(value1, designation1, Icons.timer ), + const SizedBox(width: 25), + ContainerStats(value2, designation2, Icons.favorite_outline), + const SizedBox(width: 25), + ContainerStats(value3, designation3, Icons.bolt), + ], + ), + Divider(height: 30), ], ); + + } } diff --git a/lib/view/home/web/web_homeview.dart b/lib/view/home/web/web_homeview.dart index 7c04521..038b796 100644 --- a/lib/view/home/web/web_homeview.dart +++ b/lib/view/home/web/web_homeview.dart @@ -55,7 +55,7 @@ class _WebHomeView extends State { SizedBox( height: media.width * 0.05, ), - const LigneContainerStats("1", "2", "3", "s", "s", "s"), + const LigneContainerStats("30 s", "90 BPM", "290 kCal", "Temps", "Heart rate", "Calories"), SizedBox( height: media.width * 0.05, ), @@ -78,7 +78,7 @@ class _WebHomeView extends State { SizedBox( height: media.width * 0.05, ), - const LigneContainerStats("1", "2", "3", "s", "s", "s"), + const LigneContainerStats("30 s", "90 BPM", "290 kCal", "Temps", "Heart rate", "Calories"), SizedBox( height: media.width * 0.05, ), From adf957257c25809651b096fafcef84001afd3d16 Mon Sep 17 00:00:00 2001 From: otbenjello Date: Mon, 20 Nov 2023 10:22:12 +0100 Subject: [PATCH 2/3] correction responsive + ajout vrais stats --- .../container/container_stats.dart | 4 +-- .../container/ligne_container_stats.dart | 24 ++++++++++------- lib/common_widget/graph/bpm_by_time.dart | 2 +- lib/common_widget/stats.dart | 2 +- lib/modele/activity.dart | 26 +++++++++++++++++++ lib/view/activity/web/web_list_activity.dart | 2 +- lib/view/home/mobile/mobile_homeview.dart | 4 +-- lib/view/home/web/web_homeview.dart | 14 +++++++--- pubspec.yaml | 1 + 9 files changed, 60 insertions(+), 19 deletions(-) diff --git a/lib/common_widget/container/container_stats.dart b/lib/common_widget/container/container_stats.dart index e5ce6f0..ff2ddbb 100644 --- a/lib/common_widget/container/container_stats.dart +++ b/lib/common_widget/container/container_stats.dart @@ -13,8 +13,8 @@ class ContainerStats extends StatelessWidget { @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( diff --git a/lib/common_widget/container/ligne_container_stats.dart b/lib/common_widget/container/ligne_container_stats.dart index e294767..3f536ff 100644 --- a/lib/common_widget/container/ligne_container_stats.dart +++ b/lib/common_widget/container/ligne_container_stats.dart @@ -5,6 +5,7 @@ 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); @@ -16,6 +17,11 @@ 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 Column( @@ -44,17 +50,17 @@ class LigneContainerStats extends StatelessWidget { ), SizedBox(height: 20), - - Row( + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child:Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - const SizedBox(width: 25), - ContainerStats(value1, designation1, Icons.timer ), - const SizedBox(width: 25), - ContainerStats(value2, designation2, Icons.favorite_outline), - const SizedBox(width: 25), - ContainerStats(value3, designation3, Icons.bolt), - ], + ContainerStats(value1, designation1, icon1), + const SizedBox(width: 20), + ContainerStats(value2, designation2, icon2), + const SizedBox(width: 20), + 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..a7c93dd 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), diff --git a/lib/modele/activity.dart b/lib/modele/activity.dart index 2b4ff76..37cf1ad 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 f6d2530..08de8aa 100644 --- a/lib/view/activity/web/web_list_activity.dart +++ b/lib/view/activity/web/web_list_activity.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/material.dart'; -import 'dart:html' as html; // Importation des fonctionnalités HTML +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 235dc2f..8e7cc54 100644 --- a/lib/view/home/mobile/mobile_homeview.dart +++ b/lib/view/home/mobile/mobile_homeview.dart @@ -52,7 +52,7 @@ class _MobileHomeView extends State { SizedBox( height: media.width * 0.05, ), - const LigneContainerStats("1", "2", "3", "s", "s", "s"), + const LigneContainerStats("1", "2", "3", "Minimum", "Maximum", "Moyenne", Icons.trending_down,Icons.trending_up,Icons.favorite_outline ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -72,7 +72,7 @@ class _MobileHomeView extends State { SizedBox( height: media.width * 0.05, ), - const LigneContainerStats("1", "2", "3", "s", "s", "s"), + const LigneContainerStats("1", "2", "3", "Minimum", "Maximum", "Moyenne", Icons.trending_down,Icons.trending_up,Icons.favorite_outline ), Container( padding: const EdgeInsets.only(left: 15), height: media.width * 0.5, diff --git a/lib/view/home/web/web_homeview.dart b/lib/view/home/web/web_homeview.dart index 038b796..3f8e2d2 100644 --- a/lib/view/home/web/web_homeview.dart +++ b/lib/view/home/web/web_homeview.dart @@ -1,10 +1,12 @@ 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/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'; @@ -19,12 +21,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( @@ -55,7 +61,8 @@ class _WebHomeView extends State { SizedBox( height: media.width * 0.05, ), - const LigneContainerStats("30 s", "90 BPM", "290 kCal", "Temps", "Heart rate", "Calories"), + + LigneContainerStats(maxBpm+ " BPM",minBpm+ " BPM" ,avgBpm+ " BPM", "Minimum", "Maximum", "Moyenne", Icons.trending_down,Icons.trending_up,Icons.favorite_outline), SizedBox( height: media.width * 0.05, ), @@ -78,7 +85,8 @@ class _WebHomeView extends State { SizedBox( height: media.width * 0.05, ), - const LigneContainerStats("30 s", "90 BPM", "290 kCal", "Temps", "Heart rate", "Calories"), + 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/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: From d098b03ecf38c2de5461db8075fc201aebf212a6 Mon Sep 17 00:00:00 2001 From: otbenjello Date: Mon, 20 Nov 2023 10:42:17 +0100 Subject: [PATCH 3/3] responsive + stat --- lib/common_widget/stats.dart | 29 ------------------- .../utile/home_view/home_view_util.dart | 2 +- lib/view/home/mobile/mobile_homeview.dart | 9 ++++-- lib/view/home/web/web_homeview.dart | 2 +- lib/view/ne_pas_supprimer/home_view.txt | 2 +- 5 files changed, 10 insertions(+), 34 deletions(-) diff --git a/lib/common_widget/stats.dart b/lib/common_widget/stats.dart index a7c93dd..2fcb512 100644 --- a/lib/common_widget/stats.dart +++ b/lib/common_widget/stats.dart @@ -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/utile/home_view/home_view_util.dart b/lib/modele/utile/home_view/home_view_util.dart index 44cbe8c..15e7803 100644 --- a/lib/modele/utile/home_view/home_view_util.dart +++ b/lib/modele/utile/home_view/home_view_util.dart @@ -15,7 +15,7 @@ class HomeViewUtil { return DataHomeView( bpmSecondes, normaliserDeuxiemeElement(bpmSecondes2), - normaliserDeuxiemeElement(vitesseSecondes)); + normaliserDeuxiemeElement(vitesseSecondes),); } List normaliserDeuxiemeElement(List liste) { diff --git a/lib/view/home/mobile/mobile_homeview.dart b/lib/view/home/mobile/mobile_homeview.dart index 8e7cc54..c3d3cc0 100644 --- a/lib/view/home/mobile/mobile_homeview.dart +++ b/lib/view/home/mobile/mobile_homeview.dart @@ -1,10 +1,12 @@ 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/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'; @@ -22,7 +24,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( @@ -52,7 +56,8 @@ class _MobileHomeView extends State { SizedBox( height: media.width * 0.05, ), - const LigneContainerStats("1", "2", "3", "Minimum", "Maximum", "Moyenne", Icons.trending_down,Icons.trending_up,Icons.favorite_outline ), + 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 3f8e2d2..d1e9483 100644 --- a/lib/view/home/web/web_homeview.dart +++ b/lib/view/home/web/web_homeview.dart @@ -62,7 +62,7 @@ class _WebHomeView extends State { height: media.width * 0.05, ), - LigneContainerStats(maxBpm+ " BPM",minBpm+ " BPM" ,avgBpm+ " BPM", "Minimum", "Maximum", "Moyenne", Icons.trending_down,Icons.trending_up,Icons.favorite_outline), + 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, ), 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,