diff --git a/lib/common_widget/container/container_stats_activities.dart b/lib/common_widget/container/container_stats_activities.dart new file mode 100644 index 0000000..dfd5b1c --- /dev/null +++ b/lib/common_widget/container/container_stats_activities.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; +import 'package:responsive_builder/responsive_builder.dart'; +import 'package:smartfit_app_mobile/common/colo_extension.dart'; +import 'package:smartfit_app_mobile/common_widget/container/mobile/mobile_container_stats_activities.dart'; +import 'package:smartfit_app_mobile/common_widget/container/web/web_container_stats_activities.dart'; +import 'package:smartfit_app_mobile/common_widget/stats.dart'; + +class ContainerStatsActivities extends StatelessWidget { + const ContainerStatsActivities( + 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 ScreenTypeLayout.builder( + mobile: (_) => MobileContainerStatsActivities(this.value, this.designation, this.icon), + desktop: (_) => WebContainerStatsActivities(this.value, this.designation, this.icon), + ); + } +} diff --git a/lib/common_widget/container/mobile/mobile_container_stats.dart b/lib/common_widget/container/mobile/mobile_container_stats.dart index 355f624..e8350d8 100644 --- a/lib/common_widget/container/mobile/mobile_container_stats.dart +++ b/lib/common_widget/container/mobile/mobile_container_stats.dart @@ -36,6 +36,7 @@ class MobileContainerStats extends StatelessWidget { icon: icon, iconColor: TColor.white, iconBackground: TColor.secondaryColor1, + sizeIcon: 12, ), Align( alignment: Alignment.bottomLeft, diff --git a/lib/common_widget/container/mobile/mobile_container_stats_activities.dart b/lib/common_widget/container/mobile/mobile_container_stats_activities.dart new file mode 100644 index 0000000..f32e5ad --- /dev/null +++ b/lib/common_widget/container/mobile/mobile_container_stats_activities.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; +import 'package:smartfit_app_mobile/common/colo_extension.dart'; +import 'package:smartfit_app_mobile/common_widget/stats.dart'; + +class MobileContainerStatsActivities extends StatelessWidget { + const MobileContainerStatsActivities( + 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) { + var media = MediaQuery.of(context).size; + + return Container( + height: media.width * 0.5, + width: media.width * 0.4, + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 5), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(15), + border: Border.all( + color: const Color(0xffe1e1e1), + ), + boxShadow: const [ + BoxShadow( + color: Colors.black12, + offset: Offset(3, 3), + blurRadius: 3, + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, // Centrer horizontalement + mainAxisAlignment: MainAxisAlignment.center, + + children: [ + StatIcon( + icon: icon, + iconColor: TColor.white, + iconBackground: TColor.secondaryColor1, + sizeIcon: 40.0, + ), + SizedBox(height: 40), // Espacement entre l'icône et le texte + Text( + designation, + style: const TextStyle(fontSize: 15), + textAlign: TextAlign.center, + ), + Text( + value, + style: const TextStyle( + fontSize: 20 , + fontWeight: FontWeight.w800, + ), + textAlign: TextAlign.center, + ), + ], + ), + ); + } +} diff --git a/lib/common_widget/container/web/web_container_stats.dart b/lib/common_widget/container/web/web_container_stats.dart index 89aa241..638940b 100644 --- a/lib/common_widget/container/web/web_container_stats.dart +++ b/lib/common_widget/container/web/web_container_stats.dart @@ -13,7 +13,7 @@ class WebContainerStats extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - height: 70, + height: 80, width: 70, padding: const EdgeInsets.all(8), margin: const EdgeInsets.symmetric(vertical: 5), @@ -36,6 +36,7 @@ class WebContainerStats extends StatelessWidget { icon: icon, iconColor: TColor.white, iconBackground: TColor.secondaryColor1, + sizeIcon: 8.0, ), Align( alignment: Alignment.bottomLeft, diff --git a/lib/common_widget/container/web/web_container_stats_activities.dart b/lib/common_widget/container/web/web_container_stats_activities.dart new file mode 100644 index 0000000..2e5a7d2 --- /dev/null +++ b/lib/common_widget/container/web/web_container_stats_activities.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; +import 'package:smartfit_app_mobile/common/colo_extension.dart'; +import 'package:smartfit_app_mobile/common_widget/stats.dart'; + +class WebContainerStatsActivities extends StatelessWidget { + const WebContainerStatsActivities( + 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) { + var media = MediaQuery.of(context).size; + + return Container( + height: media.width * 0.2, + width: media.width * 0.3, + padding: const EdgeInsets.all(8), + margin: const EdgeInsets.symmetric(vertical: 5), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(15), + border: Border.all( + color: const Color(0xffe1e1e1), + ), + boxShadow: const [ + BoxShadow( + color: Colors.black12, + offset: Offset(3, 3), + blurRadius: 3, + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, // Centrer horizontalement + mainAxisAlignment: MainAxisAlignment.center, + + children: [ + StatIcon( + icon: icon, + iconColor: TColor.white, + iconBackground: TColor.secondaryColor1, + sizeIcon: 40.0, + ), + SizedBox(height: 40), // Espacement entre l'icône et le texte + Text( + designation, + style: const TextStyle(fontSize: 15), + textAlign: TextAlign.center, + ), + Text( + value, + style: const TextStyle( + fontSize: 20 , + fontWeight: FontWeight.w800, + ), + textAlign: TextAlign.center, + ), + ], + ), + ); + } +} diff --git a/lib/common_widget/graph/mobile/mobile_altitude_by_time.dart b/lib/common_widget/graph/mobile/mobile_altitude_by_time.dart index da7691c..cc5bc31 100644 --- a/lib/common_widget/graph/mobile/mobile_altitude_by_time.dart +++ b/lib/common_widget/graph/mobile/mobile_altitude_by_time.dart @@ -57,7 +57,15 @@ class _MobileGraphAltitudeByTime extends State { titlesData: FlTitlesData( leftTitles: const AxisTitles(), topTitles: const AxisTitles(), - bottomTitles: const AxisTitles(), + bottomTitles: AxisTitles( + sideTitles: SideTitles( + reservedSize: 20, + showTitles: true, + getTitlesWidget: (value, meta) { + return Text( + "${double.parse((value / 10).toStringAsFixed(2))}s"); + }, + )), rightTitles: AxisTitles( sideTitles: SideTitles( reservedSize: 60, diff --git a/lib/common_widget/graph/mobile/mobile_bpm_and_speed_by_time.dart b/lib/common_widget/graph/mobile/mobile_bpm_and_speed_by_time.dart index 6cc203f..831f8cd 100644 --- a/lib/common_widget/graph/mobile/mobile_bpm_and_speed_by_time.dart +++ b/lib/common_widget/graph/mobile/mobile_bpm_and_speed_by_time.dart @@ -188,7 +188,7 @@ class _MobileGraphBpmAndSpeedByTime getTooltipItems: (List lineBarsSpot) { return lineBarsSpot.map((lineBarSpot) { return LineTooltipItem( - "Seconde ${lineBarSpot.x.toInt()} ", + "Seconde ${lineBarSpot.x.toInt() / 10} ", const TextStyle( color: Colors.white, fontSize: 10, @@ -204,9 +204,19 @@ class _MobileGraphBpmAndSpeedByTime maxY: 110, titlesData: FlTitlesData( show: true, - leftTitles: const AxisTitles(), + leftTitles: AxisTitles( + sideTitles: rightTitles, + ), topTitles: const AxisTitles(), - bottomTitles: const AxisTitles(), + bottomTitles: AxisTitles( + sideTitles: SideTitles( + reservedSize: 20, + showTitles: true, + getTitlesWidget: (value, meta) { + return Text( + "${double.parse((value / 10).toStringAsFixed(2))}s"); + }, + )), rightTitles: AxisTitles( sideTitles: SideTitles( reservedSize: 70, diff --git a/lib/common_widget/graph/mobile/mobile_bpm_by_time.dart b/lib/common_widget/graph/mobile/mobile_bpm_by_time.dart index 93690ae..5905d52 100644 --- a/lib/common_widget/graph/mobile/mobile_bpm_by_time.dart +++ b/lib/common_widget/graph/mobile/mobile_bpm_by_time.dart @@ -65,7 +65,7 @@ class _MobileBpmByTime extends State { reservedSize: 20, showTitles: true, getTitlesWidget: (value, meta) { - return Text("${double.parse(value.toStringAsFixed(2))}s"); + return Text("${double.parse((value/10).toStringAsFixed(2))}s"); }, )), rightTitles: AxisTitles( diff --git a/lib/common_widget/stats.dart b/lib/common_widget/stats.dart index dc6f72c..0d1e922 100644 --- a/lib/common_widget/stats.dart +++ b/lib/common_widget/stats.dart @@ -1,3 +1,4 @@ + import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:smartfit_app_mobile/modele/user.dart'; @@ -127,6 +128,7 @@ class InfoStat extends StatelessWidget { icon: icon, iconColor: iconColor, iconBackground: iconBackground, + sizeIcon: 8.0, ), Align( alignment: Alignment.bottomLeft, @@ -160,11 +162,13 @@ class StatIcon extends StatelessWidget { required this.icon, required this.iconColor, required this.iconBackground, + required this.sizeIcon, }) : super(key: key); final IconData icon; final Color iconColor; final Color iconBackground; + final double? sizeIcon; @override Widget build(BuildContext context) { @@ -174,7 +178,7 @@ class StatIcon extends StatelessWidget { color: iconBackground, borderRadius: BorderRadius.circular(9), ), - child: Icon(icon, size: 8, color: iconColor), + child: Icon(icon, size: sizeIcon, color: iconColor), ); } } diff --git a/lib/main.dart b/lib/main.dart index 9452bdc..02e5c3d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart'; +import 'package:smartfit_app_mobile/view/home/stats_activities_view.dart'; import 'package:smartfit_app_mobile/view/login/signup_view.dart'; void main() { @@ -35,7 +36,7 @@ class MyApp extends StatelessWidget { // tested with just a hot reload. primaryColor: TColor.primaryColor1, fontFamily: "Poppins"), - home: const SignUpView(), + home: const StatAtivities(), //home: const ProfileView(), ); } diff --git a/lib/view/home/stats_activities_view.dart b/lib/view/home/stats_activities_view.dart new file mode 100644 index 0000000..59bbf80 --- /dev/null +++ b/lib/view/home/stats_activities_view.dart @@ -0,0 +1,79 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:smartfit_app_mobile/common_widget/container/container_stats_activities.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/manager_selected_activity.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'; + +class StatAtivities extends StatefulWidget { + const StatAtivities({super.key}); + + @override + State createState() => _StatAtivities(); +} + +class _StatAtivities extends State { + late DataHomeView data; + TextEditingController bpmController = TextEditingController(); + + @override + Widget build(BuildContext context) { + var media = MediaQuery.of(context).size; + data = HomeViewUtil().initData(context); + + return Scaffold( + backgroundColor: TColor.white, + body: SingleChildScrollView( + child: SafeArea( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 15), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const EnteteHomeView(), + SizedBox( + height: media.width * 0.05, + ), + Text( + "Status d'activité", + style: TextStyle( + color: TColor.black, + fontSize: 16, + fontWeight: FontWeight.w700), + ), + SizedBox( + height: media.width * 0.03, + ), + + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ContainerStatsActivities("10 BPM","Moyenne Bpm", Icons.favorite), + SizedBox(width: media.width *0.05,), + ContainerStatsActivities("10 m/s","Moyenne vitesse", Icons.bolt) + ],), + SizedBox( + height: media.width * 0.03, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ContainerStatsActivities("400 m","Moyenne Altitude", Icons.landscape), + SizedBox(width: media.width *0.05,), + ContainerStatsActivities("10 °C","Moyenne degrès", Icons.thermostat) + ],), + ], + ), + ), + ), + ), + ); + } +}