stats activities

pull/4/head
Othmane BENJELLOUN 1 year ago
parent cfe7879c2f
commit 2b9b680774

@ -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),
);
}
}

@ -36,6 +36,7 @@ class MobileContainerStats extends StatelessWidget {
icon: icon, icon: icon,
iconColor: TColor.white, iconColor: TColor.white,
iconBackground: TColor.secondaryColor1, iconBackground: TColor.secondaryColor1,
sizeIcon: 12,
), ),
Align( Align(
alignment: Alignment.bottomLeft, alignment: Alignment.bottomLeft,

@ -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,
),
],
),
);
}
}

@ -13,7 +13,7 @@ class WebContainerStats extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
height: 70, height: 80,
width: 70, width: 70,
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
margin: const EdgeInsets.symmetric(vertical: 5), margin: const EdgeInsets.symmetric(vertical: 5),
@ -36,6 +36,7 @@ class WebContainerStats extends StatelessWidget {
icon: icon, icon: icon,
iconColor: TColor.white, iconColor: TColor.white,
iconBackground: TColor.secondaryColor1, iconBackground: TColor.secondaryColor1,
sizeIcon: 8.0,
), ),
Align( Align(
alignment: Alignment.bottomLeft, alignment: Alignment.bottomLeft,

@ -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,
),
],
),
);
}
}

@ -57,7 +57,15 @@ class _MobileGraphAltitudeByTime extends State<MobileGraphAltitudeByTime> {
titlesData: FlTitlesData( titlesData: FlTitlesData(
leftTitles: const AxisTitles(), leftTitles: const AxisTitles(),
topTitles: 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( rightTitles: AxisTitles(
sideTitles: SideTitles( sideTitles: SideTitles(
reservedSize: 60, reservedSize: 60,

@ -188,7 +188,7 @@ class _MobileGraphBpmAndSpeedByTime
getTooltipItems: (List<LineBarSpot> lineBarsSpot) { getTooltipItems: (List<LineBarSpot> lineBarsSpot) {
return lineBarsSpot.map((lineBarSpot) { return lineBarsSpot.map((lineBarSpot) {
return LineTooltipItem( return LineTooltipItem(
"Seconde ${lineBarSpot.x.toInt()} ", "Seconde ${lineBarSpot.x.toInt() / 10} ",
const TextStyle( const TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 10, fontSize: 10,
@ -204,9 +204,19 @@ class _MobileGraphBpmAndSpeedByTime
maxY: 110, maxY: 110,
titlesData: FlTitlesData( titlesData: FlTitlesData(
show: true, show: true,
leftTitles: const AxisTitles(), leftTitles: AxisTitles(
sideTitles: rightTitles,
),
topTitles: 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( rightTitles: AxisTitles(
sideTitles: SideTitles( sideTitles: SideTitles(
reservedSize: 70, reservedSize: 70,

@ -65,7 +65,7 @@ class _MobileBpmByTime extends State<MobileBpmByTime> {
reservedSize: 20, reservedSize: 20,
showTitles: true, showTitles: true,
getTitlesWidget: (value, meta) { getTitlesWidget: (value, meta) {
return Text("${double.parse(value.toStringAsFixed(2))}s"); return Text("${double.parse((value/10).toStringAsFixed(2))}s");
}, },
)), )),
rightTitles: AxisTitles( rightTitles: AxisTitles(

@ -1,3 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/modele/user.dart';
@ -127,6 +128,7 @@ class InfoStat extends StatelessWidget {
icon: icon, icon: icon,
iconColor: iconColor, iconColor: iconColor,
iconBackground: iconBackground, iconBackground: iconBackground,
sizeIcon: 8.0,
), ),
Align( Align(
alignment: Alignment.bottomLeft, alignment: Alignment.bottomLeft,
@ -160,11 +162,13 @@ class StatIcon extends StatelessWidget {
required this.icon, required this.icon,
required this.iconColor, required this.iconColor,
required this.iconBackground, required this.iconBackground,
required this.sizeIcon,
}) : super(key: key); }) : super(key: key);
final IconData icon; final IconData icon;
final Color iconColor; final Color iconColor;
final Color iconBackground; final Color iconBackground;
final double? sizeIcon;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -174,7 +178,7 @@ class StatIcon extends StatelessWidget {
color: iconBackground, color: iconBackground,
borderRadius: BorderRadius.circular(9), borderRadius: BorderRadius.circular(9),
), ),
child: Icon(icon, size: 8, color: iconColor), child: Icon(icon, size: sizeIcon, color: iconColor),
); );
} }
} }

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/modele/user.dart';
import 'package:smartfit_app_mobile/common/colo_extension.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'; import 'package:smartfit_app_mobile/view/login/signup_view.dart';
void main() { void main() {
@ -35,7 +36,7 @@ class MyApp extends StatelessWidget {
// tested with just a hot reload. // tested with just a hot reload.
primaryColor: TColor.primaryColor1, primaryColor: TColor.primaryColor1,
fontFamily: "Poppins"), fontFamily: "Poppins"),
home: const SignUpView(), home: const StatAtivities(),
//home: const ProfileView(), //home: const ProfileView(),
); );
} }

@ -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<StatAtivities> createState() => _StatAtivities();
}
class _StatAtivities extends State<StatAtivities> {
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)
],),
],
),
),
),
),
);
}
}
Loading…
Cancel
Save