|
|
@ -24,9 +24,30 @@ class HomeView extends StatefulWidget {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class _HomeViewState extends State<HomeView> {
|
|
|
|
class _HomeViewState extends State<HomeView> {
|
|
|
|
List<FlSpot> allSpots = [FlSpot(0, 30)];
|
|
|
|
List<FlSpot> bpmSecondes = [FlSpot(0, 30)];
|
|
|
|
|
|
|
|
List<FlSpot> bpmSecondes2 = [];
|
|
|
|
|
|
|
|
List<FlSpot> vitesseSecondes = [FlSpot(0, 30)];
|
|
|
|
|
|
|
|
List<FlSpot> altitudeSecondes = [FlSpot(0, 30)];
|
|
|
|
|
|
|
|
|
|
|
|
TextEditingController bpmController = TextEditingController();
|
|
|
|
TextEditingController bpmController = TextEditingController();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void normaliserDeuxiemeElement(List<FlSpot> liste) {
|
|
|
|
|
|
|
|
// Trouver le plus grand élément dans la liste
|
|
|
|
|
|
|
|
double maxElement = 0.0;
|
|
|
|
|
|
|
|
for (var spot in liste) {
|
|
|
|
|
|
|
|
if (spot.y > maxElement) {
|
|
|
|
|
|
|
|
maxElement = spot.y;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Calculer le facteur de normalisation
|
|
|
|
|
|
|
|
double normalisationFactor = maxElement != 0.0 ? 100 / maxElement : 1.0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Mettre à jour tous les éléments de la liste
|
|
|
|
|
|
|
|
for (int i = 0; i < liste.length; i++) {
|
|
|
|
|
|
|
|
liste[i] = FlSpot(liste[i].x, liste[i].y * normalisationFactor);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
List lastWorkoutArr = [
|
|
|
|
List lastWorkoutArr = [
|
|
|
|
{
|
|
|
|
{
|
|
|
|
"name": "Full Body Workout",
|
|
|
|
"name": "Full Body Workout",
|
|
|
@ -74,7 +95,14 @@ class _HomeViewState extends State<HomeView> {
|
|
|
|
|
|
|
|
|
|
|
|
if (Provider.of<User>(context, listen: true).listActivity.isNotEmpty) {
|
|
|
|
if (Provider.of<User>(context, listen: true).listActivity.isNotEmpty) {
|
|
|
|
print("rempli");
|
|
|
|
print("rempli");
|
|
|
|
allSpots = m.getHeartRateWithTime(Provider.of<User>(context).listActivity[0]);
|
|
|
|
bpmSecondes = m.getHeartRateWithTime(Provider.of<User>(context).listActivity[0]);
|
|
|
|
|
|
|
|
vitesseSecondes = m.getSpeedWithTime(Provider.of<User>(context).listActivity[0]);
|
|
|
|
|
|
|
|
altitudeSecondes = m.getAltitudeWithTime(Provider.of<User>(context).listActivity[0]);
|
|
|
|
|
|
|
|
normaliserDeuxiemeElement(vitesseSecondes);
|
|
|
|
|
|
|
|
normaliserDeuxiemeElement(altitudeSecondes);
|
|
|
|
|
|
|
|
bpmSecondes2 = List.from(bpmSecondes) ;
|
|
|
|
|
|
|
|
normaliserDeuxiemeElement(bpmSecondes2);
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
print("vide");
|
|
|
|
print("vide");
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -83,7 +111,7 @@ class _HomeViewState extends State<HomeView> {
|
|
|
|
|
|
|
|
|
|
|
|
final lineBarsData = [
|
|
|
|
final lineBarsData = [
|
|
|
|
LineChartBarData(
|
|
|
|
LineChartBarData(
|
|
|
|
spots: allSpots,
|
|
|
|
spots: bpmSecondes,
|
|
|
|
isCurved: false,
|
|
|
|
isCurved: false,
|
|
|
|
barWidth: 2,
|
|
|
|
barWidth: 2,
|
|
|
|
belowBarData: BarAreaData(
|
|
|
|
belowBarData: BarAreaData(
|
|
|
@ -732,41 +760,12 @@ class _HomeViewState extends State<HomeView> {
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
children: [
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
Text(
|
|
|
|
"graph 5",
|
|
|
|
"Rythme cardique et vitesse",
|
|
|
|
style: TextStyle(
|
|
|
|
style: TextStyle(
|
|
|
|
color: TColor.black,
|
|
|
|
color: TColor.black,
|
|
|
|
fontSize: 16,
|
|
|
|
fontSize: 16,
|
|
|
|
fontWeight: FontWeight.w700),
|
|
|
|
fontWeight: FontWeight.w700),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
|
|
|
|
height: 30,
|
|
|
|
|
|
|
|
padding: const EdgeInsets.symmetric(horizontal: 8),
|
|
|
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
|
|
|
gradient: LinearGradient(colors: TColor.primaryG),
|
|
|
|
|
|
|
|
borderRadius: BorderRadius.circular(15),
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
child: DropdownButtonHideUnderline(
|
|
|
|
|
|
|
|
child: DropdownButton(
|
|
|
|
|
|
|
|
items: ["Semaine", "Mois"]
|
|
|
|
|
|
|
|
.map((name) => DropdownMenuItem(
|
|
|
|
|
|
|
|
value: name,
|
|
|
|
|
|
|
|
child: Text(
|
|
|
|
|
|
|
|
name,
|
|
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
|
|
color: TColor.gray, fontSize: 14),
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
))
|
|
|
|
|
|
|
|
.toList(),
|
|
|
|
|
|
|
|
onChanged: (value) {},
|
|
|
|
|
|
|
|
icon: Icon(Icons.expand_more, color: TColor.white),
|
|
|
|
|
|
|
|
hint: Text(
|
|
|
|
|
|
|
|
"Semaine",
|
|
|
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
|
|
|
|
style:
|
|
|
|
|
|
|
|
TextStyle(color: TColor.white, fontSize: 12),
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
)),
|
|
|
|
|
|
|
|
],
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
SizedBox(
|
|
|
@ -841,7 +840,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(
|
|
|
|
"il y a ${lineBarSpot.x.toInt()} minutes",
|
|
|
|
"Seconde ${lineBarSpot.x.toInt()/10} ",
|
|
|
|
const TextStyle(
|
|
|
|
const TextStyle(
|
|
|
|
color: Colors.white,
|
|
|
|
color: Colors.white,
|
|
|
|
fontSize: 10,
|
|
|
|
fontSize: 10,
|
|
|
@ -853,15 +852,13 @@ class _HomeViewState extends State<HomeView> {
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
lineBarsData: lineBarsData1,
|
|
|
|
lineBarsData: lineBarsData1,
|
|
|
|
minY: -0.5,
|
|
|
|
minY: 0,
|
|
|
|
maxY: 110,
|
|
|
|
maxY: 110,
|
|
|
|
titlesData: FlTitlesData(
|
|
|
|
titlesData: FlTitlesData(
|
|
|
|
show: true,
|
|
|
|
show: true,
|
|
|
|
leftTitles: AxisTitles(),
|
|
|
|
leftTitles: AxisTitles(),
|
|
|
|
topTitles: AxisTitles(),
|
|
|
|
topTitles: AxisTitles(),
|
|
|
|
bottomTitles: AxisTitles(
|
|
|
|
bottomTitles: AxisTitles(),
|
|
|
|
sideTitles: bottomTitles,
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
rightTitles: AxisTitles(
|
|
|
|
rightTitles: AxisTitles(
|
|
|
|
sideTitles: rightTitles,
|
|
|
|
sideTitles: rightTitles,
|
|
|
|
)),
|
|
|
|
)),
|
|
|
@ -960,15 +957,7 @@ class _HomeViewState extends State<HomeView> {
|
|
|
|
isStrokeCapRound: true,
|
|
|
|
isStrokeCapRound: true,
|
|
|
|
dotData: FlDotData(show: false),
|
|
|
|
dotData: FlDotData(show: false),
|
|
|
|
belowBarData: BarAreaData(show: false),
|
|
|
|
belowBarData: BarAreaData(show: false),
|
|
|
|
spots: const [
|
|
|
|
spots: vitesseSecondes,
|
|
|
|
FlSpot(1, 35),
|
|
|
|
|
|
|
|
FlSpot(2, 70),
|
|
|
|
|
|
|
|
FlSpot(3, 40),
|
|
|
|
|
|
|
|
FlSpot(4, 80),
|
|
|
|
|
|
|
|
FlSpot(5, 25),
|
|
|
|
|
|
|
|
FlSpot(6, 70),
|
|
|
|
|
|
|
|
FlSpot(7, 35),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
LineChartBarData get lineChartBarData1_2 => LineChartBarData(
|
|
|
|
LineChartBarData get lineChartBarData1_2 => LineChartBarData(
|
|
|
@ -983,15 +972,8 @@ class _HomeViewState extends State<HomeView> {
|
|
|
|
belowBarData: BarAreaData(
|
|
|
|
belowBarData: BarAreaData(
|
|
|
|
show: false,
|
|
|
|
show: false,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
spots: const [
|
|
|
|
spots: bpmSecondes2
|
|
|
|
FlSpot(1, 80),
|
|
|
|
,
|
|
|
|
FlSpot(2, 50),
|
|
|
|
|
|
|
|
FlSpot(3, 90),
|
|
|
|
|
|
|
|
FlSpot(4, 40),
|
|
|
|
|
|
|
|
FlSpot(5, 80),
|
|
|
|
|
|
|
|
FlSpot(6, 35),
|
|
|
|
|
|
|
|
FlSpot(7, 60),
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
SideTitles get rightTitles => SideTitles(
|
|
|
|
SideTitles get rightTitles => SideTitles(
|
|
|
@ -1036,7 +1018,7 @@ class _HomeViewState extends State<HomeView> {
|
|
|
|
|
|
|
|
|
|
|
|
SideTitles get bottomTitles => SideTitles(
|
|
|
|
SideTitles get bottomTitles => SideTitles(
|
|
|
|
showTitles: true,
|
|
|
|
showTitles: true,
|
|
|
|
reservedSize: 32,
|
|
|
|
reservedSize: 50,
|
|
|
|
interval:1,
|
|
|
|
interval:1,
|
|
|
|
getTitlesWidget: bottomTitleWidgets,
|
|
|
|
getTitlesWidget: bottomTitleWidgets,
|
|
|
|
);
|
|
|
|
);
|
|
|
|