import chnage

profile
Enzo 2 years ago
parent 64f6d5de0b
commit d8dbf8dd61

@ -1,8 +1,7 @@
import 'dart:math';
import 'dart:ui' as ui; import 'dart:ui' as ui;
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';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
class Graph extends StatelessWidget { class Graph extends StatelessWidget {
@ -30,8 +29,6 @@ class _GraphAreaState extends State<GraphArea>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {
late AnimationController _animationController; late AnimationController _animationController;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -48,7 +45,9 @@ class _GraphAreaState extends State<GraphArea>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
List<DataPoint> vitesseSecondes = Provider.of<User>(context, listen: false).listActivity[0].getSpeedWithTimeActivity(); List<DataPoint> vitesseSecondes = Provider.of<User>(context, listen: false)
.listActivity[0]
.getSpeedWithTimeActivity();
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
@ -98,7 +97,6 @@ class GraphPainter extends CustomPainter {
var cx = 0.0; var cx = 0.0;
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
var y = size.height - (data[i].speed * yRatio * _size.value); var y = size.height - (data[i].speed * yRatio * _size.value);
offsets.add(Offset(cx, y)); offsets.add(Offset(cx, y));
@ -163,7 +161,8 @@ class GraphPainter extends CustomPainter {
canvas.drawPath(linePath, linePaint); canvas.drawPath(linePath, linePaint);
int maxIndex = 0; int maxIndex = 0;
double maxY = offsets[0].dy; // Supposons que la première coordonnée est la plus grande double maxY = offsets[0]
.dy; // Supposons que la première coordonnée est la plus grande
for (int i = 1; i < offsets.length; i++) { for (int i = 1; i < offsets.length; i++) {
if (offsets[i].dy < maxY) { if (offsets[i].dy < maxY) {
@ -189,7 +188,7 @@ class DataPoint {
final double speed; final double speed;
DataPoint( DataPoint(
this.time, this.time,
this.speed, this.speed,
); );
} }

@ -7,14 +7,14 @@ class Info extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
String distance= Provider.of<User>(context, listen: false).listActivity[0].getTotalDistance(); String distance = Provider.of<User>(context, listen: false)
.listActivity[0]
.getTotalDistance();
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [ children: [
Stats(value: distance, unit: 'm', label: 'Distance'), Stats(value: distance, unit: 'm', label: 'Distance'),
], ],
); );
} }
@ -41,25 +41,25 @@ class Stats extends StatelessWidget {
Text.rich( Text.rich(
TextSpan( TextSpan(
text: value, text: value,
style: TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.w900, fontWeight: FontWeight.w900,
), ),
children: [ children: [
TextSpan(text: ' '), TextSpan(text: ' '),
TextSpan( TextSpan(
text: unit, text: unit,
style: TextStyle( style: TextStyle(
fontSize: 10, fontSize: 10,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
), ),
), ),
]), ]),
), ),
SizedBox(height: 6), SizedBox(height: 6),
Text( Text(
label, label,
style: TextStyle( style: TextStyle(
fontSize: 10, fontSize: 10,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
), ),

@ -1,6 +1,6 @@
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';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
class Stats extends StatelessWidget { class Stats extends StatelessWidget {
@ -8,16 +8,22 @@ class Stats extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
String calories= Provider.of<User>(context, listen: false).listActivity[0].getTotalCalorie(); String calories = Provider.of<User>(context, listen: false)
String heartrate= Provider.of<User>(context, listen: false).listActivity[0].getTotalAvgHeartRate(); .listActivity[0]
String time= Provider.of<User>(context, listen: false).listActivity[0].getTotalTime(); .getTotalCalorie();
String heartrate = Provider.of<User>(context, listen: false)
.listActivity[0]
.getTotalAvgHeartRate();
String time = Provider.of<User>(context, listen: false)
.listActivity[0]
.getTotalTime();
return Column( return Column(
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 30), padding: const EdgeInsets.symmetric(horizontal: 30),
child: Row( child: Row(
children: [ children: [
Text( Text(
'Statistiques', 'Statistiques',
style: TextStyle( style: TextStyle(
@ -38,7 +44,7 @@ class Stats extends StatelessWidget {
SingleChildScrollView( SingleChildScrollView(
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
child: Row( child: Row(
children: [ children: [
SizedBox(width: 30), SizedBox(width: 30),
InfoStat( InfoStat(
icon: Icons.timer, icon: Icons.timer,
@ -46,7 +52,7 @@ class Stats extends StatelessWidget {
iconBackground: Color(0xff6131AD), iconBackground: Color(0xff6131AD),
time: '+5s', time: '+5s',
label: 'Time', label: 'Time',
value: time+' s', value: time + ' s',
), ),
SizedBox(width: 15), SizedBox(width: 15),
InfoStat( InfoStat(
@ -55,7 +61,7 @@ class Stats extends StatelessWidget {
iconBackground: Color(0xff6131AD), iconBackground: Color(0xff6131AD),
time: '+5s', time: '+5s',
label: 'Heart Rate', label: 'Heart Rate',
value: heartrate+" BPM", value: heartrate + " BPM",
), ),
SizedBox(width: 15), SizedBox(width: 15),
InfoStat( InfoStat(
@ -64,7 +70,7 @@ class Stats extends StatelessWidget {
iconBackground: Color(0xff6131AD), iconBackground: Color(0xff6131AD),
time: '+5s', time: '+5s',
label: 'Energy', label: 'Energy',
value: calories+" kCal", value: calories + " kCal",
), ),
SizedBox(width: 30), SizedBox(width: 30),
], ],

@ -1,6 +1,5 @@
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_widget/helpers.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class Steps extends StatelessWidget { class Steps extends StatelessWidget {
@ -10,7 +9,9 @@ class Steps extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
print("lhwaa"); print("lhwaa");
String steps = Provider.of<User>(context, listen: false).listActivity[0].getTotalSteps(); String steps = Provider.of<User>(context, listen: false)
.listActivity[0]
.getTotalSteps();
return Padding( return Padding(
padding: const EdgeInsets.symmetric(vertical: 20), padding: const EdgeInsets.symmetric(vertical: 20),
child: Column( child: Column(

@ -1,17 +1,17 @@
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart';
import 'package:smartfit_app_mobile/Modele/activity.dart';
import 'package:smartfit_app_mobile/Modele/user.dart';
import 'package:smartfit_app_mobile/View/activity/activity.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:simple_animation_progress_bar/simple_animation_progress_bar.dart';
class WorkoutRow extends StatelessWidget { class WorkoutRow extends StatelessWidget {
final Map wObj; final Map wObj;
final VoidCallback onDelete; final VoidCallback onDelete;
final VoidCallback onClick; final VoidCallback onClick;
const WorkoutRow({Key? key, required this.wObj, required this.onDelete, required this.onClick}) : super(key: key); const WorkoutRow(
{Key? key,
required this.wObj,
required this.onDelete,
required this.onClick})
: super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

@ -1,12 +1,7 @@
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';
import 'package:smartfit_app_mobile/View/activity/list_activity.dart'; import 'package:smartfit_app_mobile/view/main_tab/main_tab_view.dart';
import 'package:smartfit_app_mobile/View/home/home_view.dart';
import 'package:smartfit_app_mobile/View/login/login_view.dart';
import 'package:smartfit_app_mobile/View/login/signup_view.dart';
import 'package:smartfit_app_mobile/View/main_tab/main_tab_view.dart';
import 'package:smartfit_app_mobile/View/page_test.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
void main() { void main() {

@ -1,5 +1,3 @@
import 'dart:ffi';
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
import 'package:smartfit_app_mobile/common_widget/graph.dart'; import 'package:smartfit_app_mobile/common_widget/graph.dart';
@ -58,19 +56,21 @@ class ActivityOfUser {
} }
return result; return result;
} }
List<FlSpot> getCalories() { List<FlSpot> getCalories() {
List<FlSpot> result = List.empty(growable: true); List<FlSpot> result = List.empty(growable: true);
int firtTimeStamp = 0; int firtTimeStamp = 0;
for (List<dynamic> ligne in _contentActivity) { for (List<dynamic> ligne in _contentActivity) {
if (ligne.length >= 39 &&
if (ligne.length >= 39 && ligne[0] == "Data" && ligne[39] == "total_calories") { ligne[0] == "Data" &&
ligne[39] == "total_calories") {
print(ligne[39]); print(ligne[39]);
if (firtTimeStamp == 0) { if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4]; firtTimeStamp = ligne[4];
} }
//result.add([(ligne[4] - firtTimeStamp) ~/ 100, ligne[7].toInt()]); //result.add([(ligne[4] - firtTimeStamp) ~/ 100, ligne[7].toInt()]);
result result.add(
.add(FlSpot((ligne[4] - firtTimeStamp) / 100, ligne[40].toDouble())); FlSpot((ligne[4] - firtTimeStamp) / 100, ligne[40].toDouble()));
} }
} }
return result; return result;
@ -80,37 +80,47 @@ class ActivityOfUser {
List<FlSpot> result = List.empty(growable: true); List<FlSpot> result = List.empty(growable: true);
print(_contentActivity.length); print(_contentActivity.length);
for (int i = 0; i < _contentActivity[_contentActivity.length-3].length; i++){ for (int i = 0;
print ( _contentActivity[_contentActivity.length-3][i]); i < _contentActivity[_contentActivity.length - 3].length;
i++) {
print(_contentActivity[_contentActivity.length - 3][i]);
if ( _contentActivity[_contentActivity.length-3][i] == "total_strides"){ if (_contentActivity[_contentActivity.length - 3][i] == "total_strides") {
return _contentActivity[_contentActivity.length-3][i+1].toString(); return _contentActivity[_contentActivity.length - 3][i + 1].toString();
} }
} }
return "NAN"; return "NAN";
} }
String getTotalCalorie() { String getTotalCalorie() {
List<FlSpot> result = List.empty(growable: true); List<FlSpot> result = List.empty(growable: true);
print(_contentActivity.length); print(_contentActivity.length);
for (int i = 0; i < _contentActivity[_contentActivity.length-3].length; i++){ for (int i = 0;
print ( _contentActivity[_contentActivity.length-3][i]); i < _contentActivity[_contentActivity.length - 3].length;
i++) {
if ( _contentActivity[_contentActivity.length-3][i] == "total_calories"){ print(_contentActivity[_contentActivity.length - 3][i]);
return _contentActivity[_contentActivity.length-3][i+1].toString();
if (_contentActivity[_contentActivity.length - 3][i] ==
"total_calories") {
return _contentActivity[_contentActivity.length - 3][i + 1].toString();
} }
} }
return "NAN"; return "NAN";
} }
String getTotalAvgHeartRate() { String getTotalAvgHeartRate() {
List<FlSpot> result = List.empty(growable: true); List<FlSpot> result = List.empty(growable: true);
print(_contentActivity.length); print(_contentActivity.length);
for (int i = 0; i < _contentActivity[_contentActivity.length-3].length; i++){ for (int i = 0;
print ( _contentActivity[_contentActivity.length-3][i]); i < _contentActivity[_contentActivity.length - 3].length;
i++) {
if ( _contentActivity[_contentActivity.length-3][i] == "total_calories"){ print(_contentActivity[_contentActivity.length - 3][i]);
return _contentActivity[_contentActivity.length-3][i+1].toString();
if (_contentActivity[_contentActivity.length - 3][i] ==
"total_calories") {
return _contentActivity[_contentActivity.length - 3][i + 1].toString();
} }
} }
return "NAN"; return "NAN";
@ -120,30 +130,36 @@ class ActivityOfUser {
List<FlSpot> result = List.empty(growable: true); List<FlSpot> result = List.empty(growable: true);
print(_contentActivity.length); print(_contentActivity.length);
for (int i = 0; i < _contentActivity[_contentActivity.length-3].length; i++){ for (int i = 0;
print ( _contentActivity[_contentActivity.length-3][i]); i < _contentActivity[_contentActivity.length - 3].length;
i++) {
if ( _contentActivity[_contentActivity.length-3][i] == "total_elapsed_time"){ print(_contentActivity[_contentActivity.length - 3][i]);
return _contentActivity[_contentActivity.length-3][i+1].toString();
if (_contentActivity[_contentActivity.length - 3][i] ==
"total_elapsed_time") {
return _contentActivity[_contentActivity.length - 3][i + 1].toString();
} }
} }
return "NAN"; return "NAN";
} }
String getTotalDistance() { String getTotalDistance() {
List<FlSpot> result = List.empty(growable: true); List<FlSpot> result = List.empty(growable: true);
print(_contentActivity.length); print(_contentActivity.length);
for (int i = 0; i < _contentActivity[_contentActivity.length-3].length; i++){ for (int i = 0;
print ( _contentActivity[_contentActivity.length-3][i]); i < _contentActivity[_contentActivity.length - 3].length;
i++) {
if ( _contentActivity[_contentActivity.length-3][i] == "total_distance"){ print(_contentActivity[_contentActivity.length - 3][i]);
return _contentActivity[_contentActivity.length-3][i+1].toString();
if (_contentActivity[_contentActivity.length - 3][i] ==
"total_distance") {
return _contentActivity[_contentActivity.length - 3][i + 1].toString();
} }
} }
return "NAN"; return "NAN";
} }
List<FlSpot> getAltitudeWithTime() { List<FlSpot> getAltitudeWithTime() {
List<FlSpot> result = List.empty(growable: true); List<FlSpot> result = List.empty(growable: true);
int firtTimeStamp = 0; int firtTimeStamp = 0;
@ -197,6 +213,7 @@ class ActivityOfUser {
} }
return result; return result;
} }
List<DataPoint> getSpeedWithTimeActivity() { List<DataPoint> getSpeedWithTimeActivity() {
List<DataPoint> result = List.empty(growable: true); List<DataPoint> result = List.empty(growable: true);
int firtTimeStamp = 0; int firtTimeStamp = 0;
@ -206,15 +223,17 @@ class ActivityOfUser {
if (firtTimeStamp == 0) { if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4]; firtTimeStamp = ligne[4];
} }
result.add( result.add(DataPoint(
DataPoint(((ligne[4] - firtTimeStamp) / 100), ligne[19].toDouble(), )); ((ligne[4] - firtTimeStamp) / 100),
ligne[19].toDouble(),
));
} }
if (ligne[0] == "Data" && ligne[1] == 2) { if (ligne[0] == "Data" && ligne[1] == 2) {
if (firtTimeStamp == 0) { if (firtTimeStamp == 0) {
firtTimeStamp = ligne[4]; firtTimeStamp = ligne[4];
} }
result.add( result.add(DataPoint(
DataPoint( ((ligne[4] - firtTimeStamp)/ 100), ligne[25].toDouble())); ((ligne[4] - firtTimeStamp) / 100), ligne[25].toDouble()));
} }
} }
return result; return result;

@ -1,7 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:smartfit_app_mobile/Modele/Api/i_data_strategy.dart'; import 'package:smartfit_app_mobile/modele/api/i_data_strategy.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';

@ -1,5 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smartfit_app_mobile/Modele/activity.dart'; import 'package:smartfit_app_mobile/modele/activity.dart';
class User extends ChangeNotifier { class User extends ChangeNotifier {
String? username; String? username;

@ -2,14 +2,13 @@ import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:crypto/crypto.dart'; import 'package:crypto/crypto.dart';
import 'package:dotted_dashed_line/dotted_dashed_line.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smartfit_app_mobile/Modele/Api/i_data_strategy.dart'; import 'package:smartfit_app_mobile/modele/api/i_data_strategy.dart';
import 'package:smartfit_app_mobile/Modele/Api/request_api.dart'; import 'package:smartfit_app_mobile/modele/api/request_api.dart';
import 'package:smartfit_app_mobile/Modele/activity.dart'; import 'package:smartfit_app_mobile/modele/activity.dart';
import 'package:smartfit_app_mobile/Modele/manager_file.dart'; import 'package:smartfit_app_mobile/modele/manager_file.dart';
import 'package:smartfit_app_mobile/Modele/user.dart'; import 'package:smartfit_app_mobile/modele/user.dart';
import 'package:smartfit_app_mobile/View/home/home_view.dart'; import 'package:smartfit_app_mobile/View/home/home_view.dart';
import 'package:smartfit_app_mobile/View/main_tab/main_tab_view.dart'; import 'package:smartfit_app_mobile/View/main_tab/main_tab_view.dart';
import 'package:smartfit_app_mobile/common_widget/round_button.dart'; import 'package:smartfit_app_mobile/common_widget/round_button.dart';
@ -46,7 +45,8 @@ class _ListActivityState extends State<ListActivity> {
print("test22"); print("test22");
print(ActivityOfUser(nom, result).getHeartRateWithTime()); print(ActivityOfUser(nom, result).getHeartRateWithTime());
print("test33"); print("test33");
Provider.of<User>(context, listen: false).addActivity(ActivityOfUser(nom, result)); Provider.of<User>(context, listen: false)
.addActivity(ActivityOfUser(nom, result));
//print(x.getDistanceWithTime(ActivityOfUser(result))); //print(x.getDistanceWithTime(ActivityOfUser(result)));
//print(x.getDistance(ActivityOfUser(result))); //print(x.getDistance(ActivityOfUser(result)));
//print(x.getAltitudeWithTime(ActivityOfUser(result))); //print(x.getAltitudeWithTime(ActivityOfUser(result)));
@ -148,17 +148,14 @@ class _ListActivityState extends State<ListActivity> {
List lastWorkoutArr = []; List lastWorkoutArr = [];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var media = MediaQuery.of(context).size; var media = MediaQuery.of(context).size;
return Scaffold( return Scaffold(
backgroundColor: TColor.white, backgroundColor: TColor.white,
body: SingleChildScrollView( body: SingleChildScrollView(
child: SafeArea( child: SafeArea(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 15), padding: const EdgeInsets.symmetric(horizontal: 15),
child: Column( child: Column(
@ -168,7 +165,6 @@ class _ListActivityState extends State<ListActivity> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
"List Activités", "List Activités",
style: TextStyle( style: TextStyle(
@ -185,7 +181,6 @@ class _ListActivityState extends State<ListActivity> {
for (var element in result!.files) { for (var element in result!.files) {
readFile(element.name); readFile(element.name);
print(element.name); print(element.name);
} }
} }
}, },
@ -200,54 +195,61 @@ class _ListActivityState extends State<ListActivity> {
], ],
), ),
Provider.of<User>(context, listen: true).listActivity.isEmpty Provider.of<User>(context, listen: true).listActivity.isEmpty
? Column( ? Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox(height: 20), SizedBox(height: 20),
Text( Text(
"Vous n'avez pas d'activités pour le moment, veuillez en ajouter.", "Vous n'avez pas d'activités pour le moment, veuillez en ajouter.",
style: TextStyle( style: TextStyle(
color: TColor.gray, color: TColor.gray,
fontSize: 11, fontSize: 11,
fontStyle: FontStyle.italic, fontStyle: FontStyle.italic,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
), ),
)]) )
: ])
ListView.builder( : ListView.builder(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true, shrinkWrap: true,
itemCount: Provider.of<User>(context, listen: true).listActivity.length, itemCount: Provider.of<User>(context, listen: true)
itemBuilder: (context, index) { .listActivity
var activityObj = Provider.of<User>(context, listen: true).listActivity[index] as ActivityOfUser; .length,
var activityMap = activityObj.toMap(); itemBuilder: (context, index) {
return InkWell( var activityObj =
onTap: () { Provider.of<User>(context, listen: true)
Provider.of<User>(context, listen: false).removeActivity(activityObj); .listActivity[index] as ActivityOfUser;
Provider.of<User>(context, listen: false).insertActivity(0, activityObj); var activityMap = activityObj.toMap();
}, return InkWell(
child: WorkoutRow( onTap: () {
wObj: activityMap, Provider.of<User>(context, listen: false)
onDelete: () { .removeActivity(activityObj);
Provider.of<User>(context, listen: false).removeActivity(activityObj); Provider.of<User>(context, listen: false)
}, .insertActivity(0, activityObj);
onClick: () { },
Provider.of<User>(context, listen: false).removeActivity(activityObj); child: WorkoutRow(
Provider.of<User>(context, listen: false).insertActivity(0, activityObj); wObj: activityMap,
}, onDelete: () {
)); Provider.of<User>(context, listen: false)
}), .removeActivity(activityObj);
},
onClick: () {
Provider.of<User>(context, listen: false)
.removeActivity(activityObj);
Provider.of<User>(context, listen: false)
.insertActivity(0, activityObj);
},
));
}),
SizedBox( SizedBox(
height: media.width * 0.1, height: media.width * 0.1,
), ),
], ],
),
),
), ),
), ),
), );
),
);
} }
} }

@ -1,7 +1,6 @@
import 'package:dotted_dashed_line/dotted_dashed_line.dart'; import 'package:dotted_dashed_line/dotted_dashed_line.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smartfit_app_mobile/Modele/manager_file.dart'; import 'package:smartfit_app_mobile/modele/user.dart';
import 'package:smartfit_app_mobile/Modele/user.dart';
import 'package:smartfit_app_mobile/common_widget/round_button.dart'; import 'package:smartfit_app_mobile/common_widget/round_button.dart';
import 'package:fl_chart/fl_chart.dart'; import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -21,14 +20,12 @@ class HomeView extends StatefulWidget {
State<HomeView> createState() => _HomeViewState(); State<HomeView> createState() => _HomeViewState();
} }
class _HomeViewState extends State<HomeView> { class _HomeViewState extends State<HomeView> {
List<FlSpot> bpmSecondes = [FlSpot(0, 30)]; List<FlSpot> bpmSecondes = [FlSpot(0, 30)];
List<FlSpot> bpmSecondes2 = []; List<FlSpot> bpmSecondes2 = [];
double calories = 0.0; double calories = 0.0;
List<FlSpot> vitesseSecondes = [FlSpot(0, 30)]; List<FlSpot> vitesseSecondes = [FlSpot(0, 30)];
List<FlSpot> altitudeSecondes = [FlSpot(0, 30)]; List<FlSpot> altitudeSecondes = [FlSpot(0, 30)];
TextEditingController bpmController = TextEditingController(); TextEditingController bpmController = TextEditingController();
@ -49,6 +46,7 @@ class _HomeViewState extends State<HomeView> {
liste[i] = FlSpot(liste[i].x, liste[i].y * normalisationFactor); liste[i] = FlSpot(liste[i].x, liste[i].y * normalisationFactor);
} }
} }
List lastWorkoutArr = [ List lastWorkoutArr = [
{ {
"name": "Full Body Workout", "name": "Full Body Workout",
@ -91,26 +89,25 @@ class _HomeViewState extends State<HomeView> {
var media = MediaQuery.of(context).size; var media = MediaQuery.of(context).size;
print("test3"); print("test3");
if (Provider.of<User>(context, listen: true).listActivity.isNotEmpty) { if (Provider.of<User>(context, listen: true).listActivity.isNotEmpty) {
print("rempli"); print("rempli");
bpmSecondes = Provider.of<User>(context).listActivity[0].getHeartRateWithTime(); bpmSecondes =
vitesseSecondes = Provider.of<User>(context).listActivity[0].getSpeedWithTime(); Provider.of<User>(context).listActivity[0].getHeartRateWithTime();
altitudeSecondes = Provider.of<User>(context).listActivity[0].getAltitudeWithTime(); vitesseSecondes =
Provider.of<User>(context).listActivity[0].getSpeedWithTime();
altitudeSecondes =
Provider.of<User>(context).listActivity[0].getAltitudeWithTime();
calories = Provider.of<User>(context).listActivity[0].getCalories()[0].y; calories = Provider.of<User>(context).listActivity[0].getCalories()[0].y;
normaliserDeuxiemeElement(vitesseSecondes); normaliserDeuxiemeElement(vitesseSecondes);
normaliserDeuxiemeElement(altitudeSecondes); normaliserDeuxiemeElement(altitudeSecondes);
bpmSecondes2 = List.from(bpmSecondes) ; bpmSecondes2 = List.from(bpmSecondes);
normaliserDeuxiemeElement(bpmSecondes2); normaliserDeuxiemeElement(bpmSecondes2);
} else { } else {
print("vide"); print("vide");
} }
print("test4"); print("test4");
final lineBarsData = [ final lineBarsData = [
LineChartBarData( LineChartBarData(
spots: bpmSecondes, spots: bpmSecondes,
@ -336,18 +333,18 @@ class _HomeViewState extends State<HomeView> {
fontWeight: FontWeight.w700), fontWeight: FontWeight.w700),
), ),
TextField( TextField(
controller: bpmController, controller: bpmController,
readOnly: true, readOnly: true,
style: TextStyle( style: TextStyle(
color: color:
TColor.primaryColor1.withOpacity(0.8), TColor.primaryColor1.withOpacity(0.8),
fontWeight: FontWeight.w700, fontWeight: FontWeight.w700,
fontSize: 18), fontSize: 18),
decoration: InputDecoration( decoration: InputDecoration(
border: InputBorder.none, // Ajoutez cette ligne pour supprimer la bordure border: InputBorder
), .none, // Ajoutez cette ligne pour supprimer la bordure
), ),
),
], ],
), ),
), ),
@ -414,7 +411,8 @@ class _HomeViewState extends State<HomeView> {
touchTooltipData: LineTouchTooltipData( touchTooltipData: LineTouchTooltipData(
tooltipBgColor: TColor.secondaryColor1, tooltipBgColor: TColor.secondaryColor1,
tooltipRoundedRadius: 20, tooltipRoundedRadius: 20,
getTooltipItems: (List<LineBarSpot> lineBarsSpot) { getTooltipItems:
(List<LineBarSpot> lineBarsSpot) {
return lineBarsSpot.map((lineBarSpot) { return lineBarsSpot.map((lineBarSpot) {
bpmController.text = "${lineBarSpot.y} BPM"; bpmController.text = "${lineBarSpot.y} BPM";
return LineTooltipItem( return LineTooltipItem(
@ -729,7 +727,7 @@ class _HomeViewState extends State<HomeView> {
), ),
child: FittedBox( child: FittedBox(
child: Text( child: Text(
'${200-calories.toInt()} kCal\n restantes', '${200 - calories.toInt()} kCal\n restantes',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
color: TColor.white, color: TColor.white,
@ -742,7 +740,8 @@ class _HomeViewState extends State<HomeView> {
backStrokeWidth: 10, backStrokeWidth: 10,
progressColors: TColor.primaryG, progressColors: TColor.primaryG,
backColor: Colors.grey.shade100, backColor: Colors.grey.shade100,
valueNotifier: ValueNotifier(calories/200*100), valueNotifier: ValueNotifier(
calories / 200 * 100),
startAngle: -180, startAngle: -180,
), ),
], ],
@ -842,7 +841,7 @@ class _HomeViewState extends State<HomeView> {
getTooltipItems: (List<LineBarSpot> lineBarsSpot) { getTooltipItems: (List<LineBarSpot> lineBarsSpot) {
return lineBarsSpot.map((lineBarSpot) { return lineBarsSpot.map((lineBarSpot) {
return LineTooltipItem( return LineTooltipItem(
"Seconde ${lineBarSpot.x.toInt()/10} ", "Seconde ${lineBarSpot.x.toInt() / 10} ",
const TextStyle( const TextStyle(
color: Colors.white, color: Colors.white,
fontSize: 10, fontSize: 10,
@ -898,8 +897,6 @@ class _HomeViewState extends State<HomeView> {
); );
} }
List<PieChartSectionData> showingSections() { List<PieChartSectionData> showingSections() {
return List.generate( return List.generate(
2, 2,
@ -974,8 +971,7 @@ class _HomeViewState extends State<HomeView> {
belowBarData: BarAreaData( belowBarData: BarAreaData(
show: false, show: false,
), ),
spots: bpmSecondes2 spots: bpmSecondes2,
,
); );
SideTitles get rightTitles => SideTitles( SideTitles get rightTitles => SideTitles(
@ -1021,7 +1017,7 @@ class _HomeViewState extends State<HomeView> {
SideTitles get bottomTitles => SideTitles( SideTitles get bottomTitles => SideTitles(
showTitles: true, showTitles: true,
reservedSize: 50, reservedSize: 50,
interval:1, interval: 1,
getTitlesWidget: bottomTitleWidgets, getTitlesWidget: bottomTitleWidgets,
); );

@ -2,12 +2,10 @@ import 'dart:convert';
import 'package:crypto/crypto.dart'; import 'package:crypto/crypto.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smartfit_app_mobile/Modele/Api/i_data_strategy.dart'; import 'package:smartfit_app_mobile/modele/api/i_data_strategy.dart';
import 'package:smartfit_app_mobile/Modele/Api/request_api.dart'; import 'package:smartfit_app_mobile/modele/api/request_api.dart';
import 'package:smartfit_app_mobile/Modele/user.dart'; import 'package:smartfit_app_mobile/modele/user.dart';
import 'package:smartfit_app_mobile/View/activity/list_activity.dart'; import 'package:smartfit_app_mobile/view/main_tab/main_tab_view.dart';
import 'package:smartfit_app_mobile/View/main_tab/main_tab_view.dart';
import 'package:smartfit_app_mobile/View/page_test.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/common_widget/round_button.dart'; import 'package:smartfit_app_mobile/common_widget/round_button.dart';
import 'package:smartfit_app_mobile/common_widget/round_text_field.dart'; import 'package:smartfit_app_mobile/common_widget/round_text_field.dart';

@ -1,9 +1,9 @@
import 'dart:convert'; import 'dart:convert';
import 'package:crypto/crypto.dart'; import 'package:crypto/crypto.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:smartfit_app_mobile/Modele/Api/i_data_strategy.dart'; import 'package:smartfit_app_mobile/modele/api/i_data_strategy.dart';
import 'package:smartfit_app_mobile/Modele/Api/request_api.dart'; import 'package:smartfit_app_mobile/modele/api/request_api.dart';
import 'package:smartfit_app_mobile/View/login/login_view.dart'; import 'package:smartfit_app_mobile/view/login/login_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/common_widget/round_button.dart'; import 'package:smartfit_app_mobile/common_widget/round_button.dart';
import 'package:smartfit_app_mobile/common_widget/round_text_field.dart'; import 'package:smartfit_app_mobile/common_widget/round_text_field.dart';

@ -1,11 +1,10 @@
import 'package:smartfit_app_mobile/View/activity/list_activity.dart'; import 'package:smartfit_app_mobile/view/activity/list_activity.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/common_widget/tab_button.dart'; import 'package:smartfit_app_mobile/common_widget/tab_button.dart';
import 'package:smartfit_app_mobile/view/activity/activity.dart'; import 'package:smartfit_app_mobile/view/activity/activity.dart';
import 'package:smartfit_app_mobile/view/home/home_view.dart'; import 'package:smartfit_app_mobile/view/home/home_view.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smartfit_app_mobile/view/map/my_map.dart'; import 'package:smartfit_app_mobile/view/map/my_map.dart';
import 'package:smartfit_app_mobile/view/page_test.dart';
import 'package:smartfit_app_mobile/view/profile/profile_view.dart'; import 'package:smartfit_app_mobile/view/profile/profile_view.dart';
class MainTabView extends StatefulWidget { class MainTabView extends StatefulWidget {

@ -7,12 +7,9 @@ import 'package:path_provider/path_provider.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'dart:io'; import 'dart:io';
import 'package:provider/provider.dart'; import 'package:smartfit_app_mobile/modele/api/i_data_strategy.dart';
import 'package:smartfit_app_mobile/Modele/Api/i_data_strategy.dart'; import 'package:smartfit_app_mobile/modele/api/request_api.dart';
import 'package:smartfit_app_mobile/Modele/Api/request_api.dart'; import 'package:smartfit_app_mobile/modele/manager_file.dart';
import 'package:smartfit_app_mobile/Modele/activity.dart';
import 'package:smartfit_app_mobile/Modele/manager_file.dart';
import 'package:smartfit_app_mobile/Modele/user.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
// ----------- File --------------- // // ----------- File --------------- //
@ -83,7 +80,6 @@ class _TestPage extends State<TestPage> {
File f = File(await x.localPath + "/fit2.csv"); File f = File(await x.localPath + "/fit2.csv");
f.createSync(); f.createSync();
await f.writeAsString(csv); await f.writeAsString(csv);
} }
} }
@ -211,8 +207,7 @@ class _TestPage extends State<TestPage> {
onPressed: createUser, child: const Text("Create User")), onPressed: createUser, child: const Text("Create User")),
ElevatedButton( ElevatedButton(
onPressed: deleteUser, child: const Text("Delete User")), onPressed: deleteUser, child: const Text("Delete User")),
ElevatedButton( ElevatedButton(onPressed: readFile, child: const Text("ReadFile")),
onPressed: readFile, child: const Text("ReadFile")),
ElevatedButton(onPressed: getFiles, child: const Text("getFiles")), ElevatedButton(onPressed: getFiles, child: const Text("getFiles")),
ElevatedButton( ElevatedButton(
onPressed: modifAttribut, child: const Text("modif attribut")), onPressed: modifAttribut, child: const Text("modif attribut")),

Loading…
Cancel
Save