Merge branch 'othmane3' into Enzo

profile
Enzo 2 years ago
commit 84f798dc89

@ -1,17 +1,20 @@
import 'package:flutter/material.dart'; 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 { 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); : super(key: key);
final String value; final String value;
final String designation; final String designation;
final IconData icon;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
height: 110, height: 100,
width: 110, width: 100,
padding: const EdgeInsets.all(8), padding: const EdgeInsets.all(8),
margin: const EdgeInsets.symmetric(vertical: 5), margin: const EdgeInsets.symmetric(vertical: 5),
decoration: BoxDecoration( decoration: BoxDecoration(
@ -29,6 +32,11 @@ class ContainerStats extends StatelessWidget {
]), ]),
child: Stack( child: Stack(
children: [ children: [
StatIcon(
icon: icon,
iconColor: TColor.white,
iconBackground: TColor.secondaryColor1,
),
Align( Align(
alignment: Alignment.bottomLeft, alignment: Alignment.bottomLeft,
child: Column( child: Column(

@ -1,9 +1,11 @@
import 'package:flutter/material.dart'; 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'; import 'package:smartfit_app_mobile/common_widget/container/container_stats.dart';
class LigneContainerStats extends StatelessWidget { class LigneContainerStats extends StatelessWidget {
const LigneContainerStats(this.value1, this.value2, this.value3, const LigneContainerStats(this.value1, this.value2, this.value3,
this.designation1, this.designation2, this.designation3, this.designation1, this.designation2, this.designation3,
this.icon1, this.icon2, this.icon3,
{Key? key}) {Key? key})
: super(key: key); : super(key: key);
@ -15,17 +17,55 @@ class LigneContainerStats extends StatelessWidget {
final String designation2; final String designation2;
final String designation3; final String designation3;
final IconData icon1;
final IconData icon2;
final IconData icon3;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Row( return Column(
children: [ 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), const SizedBox(width: 20),
ContainerStats(value1, designation1), ContainerStats(value2, designation2, icon2),
const SizedBox(width: 20),
ContainerStats(value2, designation2),
const SizedBox(width: 20), const SizedBox(width: 20),
ContainerStats(value3, designation3), ContainerStats(value3, designation3, icon3),
],)
),
Divider(height: 30),
], ],
); );
} }
} }

@ -80,7 +80,7 @@ class _GraphBpmByTime extends State<GraphBpmByTime> {
return ClipRRect( return ClipRRect(
borderRadius: BorderRadius.circular(25), borderRadius: BorderRadius.circular(25),
child: Container( child: Container(
height: media.width * 0.2, height: media.height * 0.3,
width: double.maxFinite, width: double.maxFinite,
decoration: BoxDecoration( decoration: BoxDecoration(
color: TColor.primaryColor2.withOpacity(0.3), color: TColor.primaryColor2.withOpacity(0.3),

@ -45,7 +45,7 @@ class Stats extends StatelessWidget {
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
child: Row( child: Row(
children: [ children: [
const SizedBox(width: 30), const SizedBox(width: 15),
InfoStat( InfoStat(
icon: Icons.timer, icon: Icons.timer,
iconColor: Color.fromARGB(255, 255, 255, 255), iconColor: Color.fromARGB(255, 255, 255, 255),
@ -126,7 +126,6 @@ class InfoStat extends StatelessWidget {
iconColor: iconColor, iconColor: iconColor,
iconBackground: iconBackground, iconBackground: iconBackground,
), ),
Change(time: time),
Align( Align(
alignment: Alignment.bottomLeft, alignment: Alignment.bottomLeft,
child: Column( 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 { class StatIcon extends StatelessWidget {
const StatIcon({ const StatIcon({

@ -97,6 +97,32 @@ class ActivityOfUser {
return "null"; 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() { String getTotalCalorie() {
for (int i = 0; i < _contentActivity[_dataSession].length; i++) { for (int i = 0; i < _contentActivity[_dataSession].length; i++) {
if (_contentActivity[_dataSession][i] == "total_calories") { if (_contentActivity[_dataSession][i] == "total_calories") {

@ -2,6 +2,7 @@ import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:universal_html/html.dart' as html;
import 'package:crypto/crypto.dart'; import 'package:crypto/crypto.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';

@ -1,11 +1,13 @@
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.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/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/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_and_speed_by_time.dart';
import 'package:smartfit_app_mobile/common_widget/graph/bpm_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_widget/other/entete_home_view.dart';
import 'package:smartfit_app_mobile/common/colo_extension.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/data_home_view.dart';
import 'package:smartfit_app_mobile/modele/utile/home_view/home_view_util.dart'; import 'package:smartfit_app_mobile/modele/utile/home_view/home_view_util.dart';
@ -23,7 +25,9 @@ class _MobileHomeView extends State<MobileHomeView> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var media = MediaQuery.of(context).size; var media = MediaQuery.of(context).size;
String maxBpm = context.watch<User>().listActivity[0].getMaxBpm();
String minBpm = context.watch<User>().listActivity[0].getMinBpm();
String avgBpm = context.watch<User>().listActivity[0].getAvgBpm();
data = HomeViewUtil().initData(context); data = HomeViewUtil().initData(context);
return Scaffold( return Scaffold(
@ -53,7 +57,16 @@ class _MobileHomeView extends State<MobileHomeView> {
SizedBox( SizedBox(
height: media.width * 0.05, 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( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [

@ -1,11 +1,13 @@
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.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/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/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_and_speed_by_time.dart';
import 'package:smartfit_app_mobile/common_widget/graph/bpm_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_widget/other/entete_home_view.dart';
import 'package:smartfit_app_mobile/common/colo_extension.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/data_home_view.dart';
import 'package:smartfit_app_mobile/modele/utile/home_view/home_view_util.dart'; import 'package:smartfit_app_mobile/modele/utile/home_view/home_view_util.dart';
@ -20,12 +22,16 @@ class _WebHomeView extends State<WebHomeView> {
late DataHomeView data; late DataHomeView data;
TextEditingController bpmController = TextEditingController(); TextEditingController bpmController = TextEditingController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var media = MediaQuery.of(context).size; var media = MediaQuery.of(context).size;
String maxBpm = context.watch<User>().listActivity[0].getMaxBpm();
String minBpm = context.watch<User>().listActivity[0].getMinBpm();
String avgBpm = context.watch<User>().listActivity[0].getAvgBpm();
data = HomeViewUtil().initData(context); data = HomeViewUtil().initData(context);
return Scaffold( return Scaffold(
backgroundColor: TColor.white, backgroundColor: TColor.white,
body: SingleChildScrollView( body: SingleChildScrollView(
@ -56,7 +62,8 @@ class _WebHomeView extends State<WebHomeView> {
SizedBox( SizedBox(
height: media.width * 0.05, 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( SizedBox(
height: media.width * 0.05, height: media.width * 0.05,
), ),
@ -79,7 +86,8 @@ class _WebHomeView extends State<WebHomeView> {
SizedBox( SizedBox(
height: media.width * 0.05, 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( SizedBox(
height: media.width * 0.05, height: media.width * 0.05,
), ),

@ -264,7 +264,7 @@ class _MobileHomeView extends State<MobileHomeView> {
title: "Voir", title: "Voir",
type: RoundButtonType.bgGradient, type: RoundButtonType.bgGradient,
fontSize: 12, fontSize: 12,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w0,
onPressed: () { onPressed: () {
Navigator.push( Navigator.push(
context, context,

@ -55,6 +55,7 @@ dependencies:
tuple: ^2.0.2 tuple: ^2.0.2
crypto: ^3.0.3 crypto: ^3.0.3
responsive_builder: ^0.7.0 responsive_builder: ^0.7.0
universal_html: ^2.2.4
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:

Loading…
Cancel
Save