commit
222a676d73
@ -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),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -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.4,
|
||||||
|
width: media.width * 0.27,
|
||||||
|
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: 30.0,
|
||||||
|
),
|
||||||
|
SizedBox(height: 20), // Espacement entre l'icône et le texte
|
||||||
|
Text(
|
||||||
|
designation,
|
||||||
|
style: const TextStyle(fontSize: 12),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
value,
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 17 ,
|
||||||
|
fontWeight: FontWeight.w800,
|
||||||
|
),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -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,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,152 @@
|
|||||||
|
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/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';
|
||||||
|
|
||||||
|
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);
|
||||||
|
int maxBpm = context.watch<User>().managerSelectedActivity.getMaxBpm();
|
||||||
|
int avgBpm = context.watch<User>().managerSelectedActivity.getAvgBpm();
|
||||||
|
double getTotalDistance = context.watch<User>().managerSelectedActivity.getTotalDistance();
|
||||||
|
int totalSteps = context.watch<User>().managerSelectedActivity.getTotalSteps();
|
||||||
|
double totalTime = context.watch<User>().managerSelectedActivity.getTotalTime();
|
||||||
|
int totalCalories = context.watch<User>().managerSelectedActivity.getCalorie();
|
||||||
|
double avgSpeed = context.watch<User>().managerSelectedActivity.getAvgSpeed();
|
||||||
|
double avgAltitude = context.watch<User>().managerSelectedActivity.getAvgAltitude();
|
||||||
|
double avgTemperature = context.watch<User>().managerSelectedActivity.getAvgTemperature();
|
||||||
|
double maxAltitude = context.watch<User>().managerSelectedActivity.getAvgTemperature();
|
||||||
|
double maxTemperature = context.watch<User>().managerSelectedActivity.getMaxTemperature();
|
||||||
|
double maxSpeed = context.watch<User>().managerSelectedActivity.getMaxSpeed();
|
||||||
|
double minSpeed = context.watch<User>().managerSelectedActivity.getMinSpeed();
|
||||||
|
double minAltitude = context.watch<User>().managerSelectedActivity.getMinAltitude();
|
||||||
|
double minTemperature = context.watch<User>().managerSelectedActivity.getMinTemperature();
|
||||||
|
int minBpm = context.watch<User>().managerSelectedActivity.getMinBpm();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print(avgTemperature);
|
||||||
|
print(avgAltitude);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return Scaffold(
|
||||||
|
backgroundColor: TColor.white,
|
||||||
|
body: SingleChildScrollView(
|
||||||
|
child: SafeArea(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 15),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: media.width * 0.03,
|
||||||
|
),
|
||||||
|
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("$avgBpm BPM","Moyenne Bpm", Icons.favorite),
|
||||||
|
SizedBox(width: media.width *0.03,),
|
||||||
|
ContainerStatsActivities("$maxBpm BPM","Maximum Bpm", Icons.trending_up),
|
||||||
|
SizedBox(width: media.width *0.03,),
|
||||||
|
ContainerStatsActivities("$minBpm BPM","Minimum Bpm", Icons.trending_down)
|
||||||
|
],),
|
||||||
|
SizedBox(
|
||||||
|
height: media.width * 0.03,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
ContainerStatsActivities("$avgSpeed m/s","Moyenne vitesse", Icons.bolt),
|
||||||
|
SizedBox(width: media.width *0.03,),
|
||||||
|
ContainerStatsActivities("$maxSpeed m/s","Maximum vitesse", Icons.trending_up),
|
||||||
|
SizedBox(width: media.width *0.03,),
|
||||||
|
ContainerStatsActivities("$minSpeed m/s","Minimum vitesse", Icons.trending_down)
|
||||||
|
],),
|
||||||
|
SizedBox(
|
||||||
|
height: media.width * 0.03,
|
||||||
|
),
|
||||||
|
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
ContainerStatsActivities("$avgTemperature °C","Moyenne Temperature", Icons.thermostat),
|
||||||
|
SizedBox(width: media.width *0.03,),
|
||||||
|
ContainerStatsActivities("$maxTemperature °C","Maximum Temperature", Icons.trending_up),
|
||||||
|
SizedBox(width: media.width *0.03,),
|
||||||
|
ContainerStatsActivities("$minTemperature °C","Minimum Temperature", Icons.trending_down)
|
||||||
|
],),
|
||||||
|
SizedBox(
|
||||||
|
height: media.width * 0.03,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
ContainerStatsActivities("$avgAltitude m","Moyenne Altitude", Icons.landscape),
|
||||||
|
SizedBox(width: media.width *0.03,),
|
||||||
|
ContainerStatsActivities("$maxAltitude m","Maximum Altitude", Icons.trending_up),
|
||||||
|
SizedBox(width: media.width *0.03,),
|
||||||
|
ContainerStatsActivities("$minAltitude m","Minimum Altitude", Icons.trending_down)
|
||||||
|
],),
|
||||||
|
SizedBox(
|
||||||
|
height: media.width * 0.03,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
ContainerStatsActivities("$getTotalDistance m","Distance Totale", Icons.double_arrow),
|
||||||
|
SizedBox(width: media.width *0.03,),
|
||||||
|
ContainerStatsActivities("$totalSteps","Total Pas", Icons.do_not_step_rounded),
|
||||||
|
],),
|
||||||
|
SizedBox(
|
||||||
|
height: media.width * 0.03,
|
||||||
|
),Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
ContainerStatsActivities("$totalTime s","Temps Total", Icons.timer),
|
||||||
|
SizedBox(width: media.width *0.03,),
|
||||||
|
ContainerStatsActivities("$totalCalories kCal","Calories Dépensées", Icons.local_fire_department),
|
||||||
|
],),
|
||||||
|
SizedBox(
|
||||||
|
height: media.width * 0.03,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue