graph axes correction mobile + map UI

pull/4/head
Othmane BENJELLOUN 1 year ago
parent a4f387e3cd
commit 5188fd6d95

@ -31,7 +31,7 @@ class ProfileInfoUser extends StatelessWidget {
Expanded(
child: TitleSubtitleCell(
title:
"${context.watch<User>().getTotalDenivelePositif().toString()} + m",
"${context.watch<User>().getTotalDenivelePositif().toStringAsFixed(2)} + m",
subtitle: "Total dénivelé positif",
),
),
@ -41,7 +41,7 @@ class ProfileInfoUser extends StatelessWidget {
Expanded(
child: TitleSubtitleCell(
title:
"${context.watch<User>().getTotalDeniveleNegatif().toString()} - m",
"${context.watch<User>().getTotalDeniveleNegatif().toStringAsFixed(2)} - m",
subtitle: "Total dénivelé négatif",
),
),

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:responsive_builder/responsive_builder.dart';
import 'package:smartfit_app_mobile/common_widget/graph/data_for_graph/func_bpm_by_time.dart';
import 'package:smartfit_app_mobile/common_widget/graph/mobile/mobile_altitude_by_time.dart';
import 'package:smartfit_app_mobile/common_widget/graph/web/web_altitude_by_time.dart';
import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart';
@ -18,9 +19,10 @@ class GraphAltitudeByTime extends StatefulWidget {
class _GraphAltitudeByTime extends State<GraphAltitudeByTime> {
@override
Widget build(BuildContext context) {
final FuncBpmByTime funcBpm = FuncBpmByTime(widget.data);
return ScreenTypeLayout.builder(
mobile: (_) => MobileGraphAltitudeByTime(widget.media, widget.data),
desktop: (_) => WebGraphAltitudeByTime(widget.media, widget.data),
mobile: (_) => MobileGraphAltitudeByTime(widget.media, widget.data, funcBpm),
desktop: (_) => WebGraphAltitudeByTime(widget.media, widget.data, funcBpm),
);
}
}

@ -21,7 +21,7 @@ class _BpmByTime extends State<BpmByTime> {
final FuncBpmByTime funcBpm = FuncBpmByTime(widget.data);
return ScreenTypeLayout.builder(
mobile: (_) => MobileBpmByTime(widget.media, widget.data),
mobile: (_) => MobileBpmByTime(widget.media, widget.data, funcBpm),
desktop: (_) => WebBpmByTime(widget.media, widget.data, funcBpm),
);
}

@ -14,14 +14,14 @@ class FuncBpmAndSpeedByTime {
getTitlesWidget: rightTitleWidgets,
showTitles: true,
interval: 20,
reservedSize: 40,
reservedSize: 42,
);
SideTitles get leftTitles => SideTitles(
getTitlesWidget: leftTitleWidgets,
showTitles: true,
interval: 20,
reservedSize: 40,
reservedSize: 42,
);
SideTitles get bottomTitles => SideTitles(
getTitlesWidget: bottomTitleWidgets,
@ -79,7 +79,7 @@ class FuncBpmAndSpeedByTime {
return Text(text,
style: TextStyle(
color: TColor.gray,
fontSize: 12,
fontSize: 8,
),
textAlign: TextAlign.center);
}
@ -113,7 +113,7 @@ class FuncBpmAndSpeedByTime {
return Text(text,
style: TextStyle(
color: TColor.gray,
fontSize: 12,
fontSize: 8,
),
textAlign: TextAlign.center);
}
@ -148,7 +148,7 @@ class FuncBpmAndSpeedByTime {
return Text(text,
style: TextStyle(
color: TColor.gray,
fontSize: 12,
fontSize: 8,
),
textAlign: TextAlign.center);
}

@ -67,19 +67,19 @@ class FuncBpmByTime {
text = '0 s';
break;
case 20:
text = "${(interval).toStringAsFixed(2)} s";
text = "${(interval).toStringAsFixed(0)} s";
break;
case 40:
text = "${(interval * 2).toStringAsFixed(2)} s";
text = "${(interval * 2).toStringAsFixed(0)} s";
break;
case 60:
text = "${(interval * 3).toStringAsFixed(2)} s";
text = "${(interval * 3).toStringAsFixed(0)} s";
break;
case 80:
text = "${(interval * 4).toStringAsFixed(2)} s";
text = "${(interval * 4).toStringAsFixed(0)} s";
break;
case 100:
text = "${(interval * 5).toStringAsFixed(2)} s";
text = "${(interval * 5).toStringAsFixed(0)} s";
break;
default:
return Container();

@ -2,14 +2,16 @@ import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/common_widget/graph/data_for_graph/func_bpm_by_time.dart';
import 'package:smartfit_app_mobile/modele/user.dart';
import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart';
class MobileGraphAltitudeByTime extends StatefulWidget {
final Size media;
final DataHomeView data;
final FuncBpmByTime func;
const MobileGraphAltitudeByTime(this.media, this.data, {Key? key})
const MobileGraphAltitudeByTime(this.media, this.data, this.func, {Key? key})
: super(key: key);
@override
@ -70,20 +72,19 @@ class _MobileGraphAltitudeByTime extends State<MobileGraphAltitudeByTime> {
leftTitles: const AxisTitles(),
topTitles: const AxisTitles(),
bottomTitles: AxisTitles(
sideTitles: SideTitles(
reservedSize: 20,
showTitles: true,
getTitlesWidget: (value, meta) {
return Text(
"${double.parse((value / 10).toStringAsFixed(2))}s");
},
)),
sideTitles: widget.func.bottomTitles,
),
rightTitles: AxisTitles(
sideTitles: SideTitles(
reservedSize: 60,
showTitles: true,
getTitlesWidget: (value, meta) {
return Text("${double.parse(value.toStringAsFixed(2))} m");
return Text("${double.parse(value.toStringAsFixed(2))} m",
style: TextStyle(
color: TColor.gray,
fontSize: 12,
),
textAlign: TextAlign.center);
},
)),
))));

@ -111,27 +111,16 @@ class _MobileGraphBpmAndSpeedByTime
titlesData: FlTitlesData(
show: true,
leftTitles: AxisTitles(
sideTitles: widget.func.rightTitles,
sideTitles: widget.func.leftTitles,
),
topTitles: const AxisTitles(),
bottomTitles: AxisTitles(
sideTitles: SideTitles(
reservedSize: 20,
showTitles: true,
getTitlesWidget: (value, meta) {
return Text(
"${double.parse((value / 10).toStringAsFixed(2))}s");
},
)),
sideTitles: widget.func.bottomTitles,
),
rightTitles: AxisTitles(
sideTitles: SideTitles(
reservedSize: 70,
showTitles: true,
getTitlesWidget: (value, meta) {
return Text(
"${double.parse(value.toStringAsFixed(2))} BPM");
},
))),
sideTitles: widget.func.rightTitles,
),),
gridData: FlGridData(
drawVerticalLine: true,
drawHorizontalLine: true,

@ -1,13 +1,15 @@
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/common_widget/graph/data_for_graph/func_bpm_by_time.dart';
import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart';
class MobileBpmByTime extends StatefulWidget {
final Size media;
final DataHomeView data;
final FuncBpmByTime func;
const MobileBpmByTime(this.media, this.data, {Key? key}) : super(key: key);
const MobileBpmByTime(this.media, this.data,this.func, {Key? key}) : super(key: key);
@override
State<MobileBpmByTime> createState() => _MobileBpmByTime();
@ -57,19 +59,19 @@ class _MobileBpmByTime extends State<MobileBpmByTime> {
leftTitles: const AxisTitles(),
topTitles: const AxisTitles(),
bottomTitles: AxisTitles(
sideTitles: SideTitles(
reservedSize: 20,
showTitles: true,
getTitlesWidget: (value, meta) {
return Text("${double.parse((value/10).toStringAsFixed(2))}s");
},
)),
sideTitles: widget.func.bottomTitles,
),
rightTitles: AxisTitles(
sideTitles: SideTitles(
reservedSize: 70,
showTitles: true,
getTitlesWidget: (value, meta) {
return Text("${double.parse(value.toStringAsFixed(2))} BPM");
return Text("${double.parse(value.toStringAsFixed(2))} BPM",
style: TextStyle(
color: TColor.gray,
fontSize: 12,
),
textAlign: TextAlign.center);
},
)),
))));

@ -2,14 +2,16 @@ import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/common_widget/graph/data_for_graph/func_bpm_by_time.dart';
import 'package:smartfit_app_mobile/modele/user.dart';
import 'package:smartfit_app_mobile/modele/utile/home_view/data_home_view.dart';
class WebGraphAltitudeByTime extends StatefulWidget {
final Size media;
final DataHomeView data;
final FuncBpmByTime func;
const WebGraphAltitudeByTime(this.media, this.data, {Key? key})
const WebGraphAltitudeByTime(this.media, this.data, this.func, {Key? key})
: super(key: key);
@override
@ -69,20 +71,19 @@ class _WebGraphAltitudeByTime extends State<WebGraphAltitudeByTime> {
leftTitles: const AxisTitles(),
topTitles: const AxisTitles(),
bottomTitles: AxisTitles(
sideTitles: SideTitles(
reservedSize: 20,
showTitles: true,
getTitlesWidget: (value, meta) {
return Text(
"${double.parse((value / 10).toStringAsFixed(2))}s");
},
)),
sideTitles: widget.func.bottomTitles,
),
rightTitles: AxisTitles(
sideTitles: SideTitles(
reservedSize: 60,
showTitles: true,
getTitlesWidget: (value, meta) {
return Text("${double.parse(value.toStringAsFixed(2))} m");
return Text("${double.parse(value.toStringAsFixed(2))} m",
style: TextStyle(
color: TColor.gray,
fontSize: 12,
),
textAlign: TextAlign.center);
},
)),
))));

@ -22,7 +22,7 @@ class HomeViewUtil {
List<FlSpot> bpmSecondes2 = List.from(bpmSecondes);
return DataHomeView(normaliserPremierElement(bpmSecondes), normaliserPremierElement(normaliserDeuxiemeElement(bpmSecondes2)),
normaliserPremierElement(normaliserDeuxiemeElement(vitesseSecondes)), altitudeSeconde);
normaliserPremierElement(normaliserDeuxiemeElement(vitesseSecondes)), normaliserPremierElement(altitudeSeconde));
}
List<FlSpot> normaliserDeuxiemeElement(List<FlSpot> liste) {

@ -47,7 +47,8 @@ class _MobileHomeView extends State<MobileHomeView> {
// -- Speed -- //
double maxSpeed = managerSelectedActivity.getMaxSpeed();
double avgSpeed = managerSelectedActivity.getAvgSpeed();
data.maxSpeed = maxSpeed;
data.time = context.watch<User>().managerSelectedActivity.getTotalTime();
return Scaffold(
backgroundColor: TColor.white,
body: SingleChildScrollView(

@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/common_widget/button/round_button.dart';
import 'package:smartfit_app_mobile/view/map/mobile/mobile_my_map.dart';
import 'package:smartfit_app_mobile/view/map/my_map_osm.dart';
@ -13,6 +15,58 @@ class ChoseMap extends StatefulWidget {
class _ChoseMap extends State<ChoseMap> {
@override
Widget build(BuildContext context) {
var media = MediaQuery.of(context).size;
return Scaffold(
backgroundColor: TColor.white,
body: SafeArea(
child: Center(
// Utilisation du widget Center pour centrer verticalement
child: Container(
width: media.width,
padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 25),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize
.min, // Utilisation de MainAxisSize.min pour que la colonne prenne la hauteur minimale nécessaire
children: [
SizedBox(
height: media.height * 0.1,
),
SvgPicture.asset(
"assets/img/group.svg",
width: media.width * 0.75,
height: media.height * 0.4,
fit: BoxFit.fitWidth,
),
SizedBox(
height: media.height * 0.1,
),
RoundButton(
title: "Use map with google map",
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const MobileMyMaps()));
},
),
SizedBox(
height: media.height * 0.03,
),
RoundButton(
title : "Use map with Open Street Map",
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => const MyMapOSM()));
},
),
Spacer(),
],
),
),
),
),
);
return Scaffold(
backgroundColor: TColor.white,
body: SafeArea(
@ -20,20 +74,7 @@ class _ChoseMap extends State<ChoseMap> {
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const MobileMyMaps()));
},
child: const Text("Use map with google map")),
TextButton(
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => const MyMapOSM()));
},
child: const Text("Use map with Open Street Map")),
const Text(
"Mettre une image la en mode une personne avec des jumelles")
],

@ -25,7 +25,7 @@ class _MobileMyMaps extends State<MobileMyMaps> {
return Scaffold(
appBar: AppBar(
title: const Text("Carte Google Map "),
backgroundColor: TColor.primaryColor1,
backgroundColor: TColor.secondaryColor1,
),
body: _getMap());
}

@ -23,7 +23,7 @@ class _MyMapOSM extends State<MyMapOSM> {
return Scaffold(
appBar: AppBar(
title: const Text("Carte Open Street Map "),
backgroundColor: TColor.primaryColor1,
backgroundColor: TColor.secondaryColor1,
),
body: FlutterMap(
options: MapOptions(center: listPolynines.first),

Loading…
Cancel
Save