duplication
continuous-integration/drone/push Build is passing Details

pull/4/head
Enzo 1 year ago
parent c7c2cb2f83
commit 624993f516

@ -53,14 +53,7 @@ class ProfileEntete extends StatelessWidget {
type: RoundButtonType.bgGradient,
fontSize: 12,
fontWeight: FontWeight.w400,
onPressed: () {
// Navigator.push(
// context,
// MaterialPageRoute(
// builder: (context) => const ActivityTrackerView(),
// ),
// );
},
onPressed: () {},
),
)
],

@ -1,430 +0,0 @@
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import '../../common/colo_extension.dart';
import '../../common_widget/today_target_cell.dart';
class ActivityTrackerView extends StatefulWidget {
const ActivityTrackerView({super.key});
@override
State<ActivityTrackerView> createState() => _ActivityTrackerViewState();
}
class _ActivityTrackerViewState extends State<ActivityTrackerView> {
int touchedIndex = -1;
List latestArr = [
{
"image": "assets/img/workout1.svg",
"title": "Drinking 300ml Water",
"time": "About 1 minutes ago"
},
{
"image": "assets/img/workout1.svg",
"title": "Eat Snack (Fitbar)",
"time": "About 3 hours ago"
},
];
@override
Widget build(BuildContext context) {
var media = MediaQuery.of(context).size;
return Scaffold(
appBar: AppBar(
backgroundColor: TColor.white,
centerTitle: true,
elevation: 0,
leading: InkWell(
onTap: () {
Navigator.pop(context);
},
child: Container(
margin: const EdgeInsets.all(8),
height: 40,
width: 40,
alignment: Alignment.center,
decoration: BoxDecoration(
color: TColor.lightGray,
borderRadius: BorderRadius.circular(10)),
child: Image.asset(
"assets/img/black_btn.png",
width: 15,
height: 15,
fit: BoxFit.contain,
),
),
),
title: Text(
"Suivi d'activité",
style: TextStyle(
color: TColor.black, fontSize: 16, fontWeight: FontWeight.w700),
),
actions: [
InkWell(
onTap: () {},
child: Container(
margin: const EdgeInsets.all(8),
height: 40,
width: 40,
alignment: Alignment.center,
decoration: BoxDecoration(
color: TColor.lightGray,
borderRadius: BorderRadius.circular(10)),
child: Image.asset(
"assets/img/more_btn.png",
width: 15,
height: 15,
fit: BoxFit.contain,
),
),
)
],
),
backgroundColor: TColor.white,
body: SingleChildScrollView(
child: Container(
padding: const EdgeInsets.symmetric(vertical: 25, horizontal: 25),
child: Column(
children: [
Container(
padding:
const EdgeInsets.symmetric(vertical: 15, horizontal: 15),
decoration: BoxDecoration(
gradient: LinearGradient(colors: [
TColor.primaryColor2.withOpacity(0.3),
TColor.primaryColor1.withOpacity(0.3)
]),
borderRadius: BorderRadius.circular(15),
),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
"Objectif d'aujourd'hui",
style: TextStyle(
color: TColor.black,
fontSize: 14,
fontWeight: FontWeight.w700),
),
SizedBox(
width: 30,
height: 30,
child: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: TColor.primaryG,
),
borderRadius: BorderRadius.circular(10),
),
child: MaterialButton(
onPressed: () {},
padding: EdgeInsets.zero,
height: 30,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(25)),
textColor: TColor.primaryColor1,
minWidth: double.maxFinite,
elevation: 0,
color: Colors.transparent,
child: const Icon(
Icons.add,
color: Colors.white,
size: 15,
)),
),
)
],
),
const SizedBox(
height: 15,
),
const Row(
children: [
Expanded(
child: TodayTargetCell(
icon: "assets/img/workout1.svg",
value: "800",
title: "Calories",
),
),
SizedBox(
width: 15,
),
Expanded(
child: TodayTargetCell(
icon: "assets/img/workout1.svg",
value: "2400",
title: "Nombre pas",
),
),
],
)
],
),
),
SizedBox(
height: media.width * 0.1,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
"Activité journalière",
style: TextStyle(
color: TColor.black,
fontSize: 16,
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(
height: media.width * 0.05,
),
Container(
height: media.width * 0.5,
padding:
const EdgeInsets.symmetric(vertical: 15, horizontal: 0),
decoration: BoxDecoration(
color: TColor.white,
borderRadius: BorderRadius.circular(15),
boxShadow: const [
BoxShadow(color: Colors.black12, blurRadius: 3)
]),
child: BarChart(BarChartData(
barTouchData: BarTouchData(
touchTooltipData: BarTouchTooltipData(
tooltipBgColor: Colors.grey,
tooltipHorizontalAlignment: FLHorizontalAlignment.right,
tooltipMargin: 10,
getTooltipItem: (group, groupIndex, rod, rodIndex) {
String weekDay;
switch (group.x) {
case 0:
weekDay = 'Monday';
break;
case 1:
weekDay = 'Tuesday';
break;
case 2:
weekDay = 'Wednesday';
break;
case 3:
weekDay = 'Thursday';
break;
case 4:
weekDay = 'Friday';
break;
case 5:
weekDay = 'Saturday';
break;
case 6:
weekDay = 'Sunday';
break;
default:
throw Error();
}
return BarTooltipItem(
'$weekDay\n',
const TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 14,
),
children: <TextSpan>[
TextSpan(
text: (rod.toY - 1).toString(),
style: TextStyle(
color: TColor.white,
fontSize: 16,
fontWeight: FontWeight.w500,
),
),
],
);
},
),
touchCallback: (FlTouchEvent event, barTouchResponse) {
setState(() {
if (!event.isInterestedForInteractions ||
barTouchResponse == null ||
barTouchResponse.spot == null) {
touchedIndex = -1;
return;
}
touchedIndex =
barTouchResponse.spot!.touchedBarGroupIndex;
});
},
),
titlesData: FlTitlesData(
show: true,
rightTitles: AxisTitles(
sideTitles: SideTitles(showTitles: false),
),
topTitles: AxisTitles(
sideTitles: SideTitles(showTitles: false),
),
bottomTitles: AxisTitles(
sideTitles: SideTitles(
showTitles: true,
getTitlesWidget: getTitles,
reservedSize: 38,
),
),
leftTitles: AxisTitles(
sideTitles: SideTitles(
showTitles: false,
),
),
),
borderData: FlBorderData(
show: false,
),
barGroups: showingGroups(),
gridData: FlGridData(show: false),
)),
),
SizedBox(
height: media.width * 0.05,
),
SizedBox(
height: media.width * 0.1,
),
],
),
),
),
);
}
Widget getTitles(double value, TitleMeta meta) {
var style = TextStyle(
color: TColor.gray,
fontWeight: FontWeight.w500,
fontSize: 12,
);
Widget text;
switch (value.toInt()) {
case 0:
text = Text('Dim', style: style);
break;
case 1:
text = Text('Lun', style: style);
break;
case 2:
text = Text('Mar', style: style);
break;
case 3:
text = Text('Mer', style: style);
break;
case 4:
text = Text('Jeu', style: style);
break;
case 5:
text = Text('Ven', style: style);
break;
case 6:
text = Text('Sam', style: style);
break;
default:
text = Text('', style: style);
break;
}
return SideTitleWidget(
axisSide: meta.axisSide,
space: 16,
child: text,
);
}
List<BarChartGroupData> showingGroups() => List.generate(7, (i) {
switch (i) {
case 0:
return makeGroupData(0, 5, TColor.primaryG,
isTouched: i == touchedIndex);
case 1:
return makeGroupData(1, 10.5, TColor.secondaryG,
isTouched: i == touchedIndex);
case 2:
return makeGroupData(2, 5, TColor.primaryG,
isTouched: i == touchedIndex);
case 3:
return makeGroupData(3, 7.5, TColor.secondaryG,
isTouched: i == touchedIndex);
case 4:
return makeGroupData(4, 15, TColor.primaryG,
isTouched: i == touchedIndex);
case 5:
return makeGroupData(5, 5.5, TColor.secondaryG,
isTouched: i == touchedIndex);
case 6:
return makeGroupData(6, 8.5, TColor.primaryG,
isTouched: i == touchedIndex);
default:
return throw Error();
}
});
BarChartGroupData makeGroupData(
int x,
double y,
List<Color> barColor, {
bool isTouched = false,
double width = 22,
List<int> showTooltips = const [],
}) {
return BarChartGroupData(
x: x,
barRods: [
BarChartRodData(
toY: isTouched ? y + 1 : y,
gradient: LinearGradient(
colors: barColor,
begin: Alignment.topCenter,
end: Alignment.bottomCenter),
width: width,
borderSide: isTouched
? const BorderSide(color: Colors.green)
: const BorderSide(color: Colors.white, width: 0),
backDrawRodData: BackgroundBarChartRodData(
show: true,
toY: 20,
color: TColor.lightGray,
),
),
],
showingTooltipIndicators: showTooltips,
);
}
}

File diff suppressed because it is too large Load Diff

@ -1,131 +0,0 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:location/location.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart';
class MobileMyMaps extends StatefulWidget {
const MobileMyMaps({super.key});
@override
State<MobileMyMaps> createState() => _MobileMyMaps();
}
class _MobileMyMaps extends State<MobileMyMaps> {
Completer<GoogleMapController> _googleMapController = Completer();
CameraPosition? _cameraPosition;
Location? _location;
LocationData? _currentLocation;
List<LatLng> _polylineCoordinates = [];
Set<Polyline> _polylines = {};
Set<Marker> _markers = {}; // Add a set to store markers
@override
void initState() {
_init();
super.initState();
}
_init() async {
_location = Location();
_cameraPosition = const CameraPosition(
target: LatLng(
0, 0), // this is just the example lat and lng for initializing
zoom: 20);
_initLocation();
}
//function to listen when we move position
_initLocation() {
_location?.getLocation().then((location) {
_currentLocation = location;
});
_location?.onLocationChanged.listen((newLocation) {
setState(() {
_currentLocation = newLocation;
_polylineCoordinates.add(LatLng(
_currentLocation?.latitude ?? 0,
_currentLocation?.longitude ?? 0,
));
_updatePolyline();
});
moveToPosition(LatLng(
_currentLocation?.latitude ?? 0, _currentLocation?.longitude ?? 0));
});
}
_updatePolyline() {
setState(() {
_polylines.clear();
_polylines.add(Polyline(
polylineId: PolylineId("polyline"),
color: TColor.primaryColor1,
points: _polylineCoordinates,
width: 10,
));
});
}
/*
// Updated _updateMarker to use the custom marker
_updateMarker(LatLng position) async {
final markerId = MarkerId('marker');
final marker = Marker(markerId: markerId, position: position);
_markers.clear();
_markers.add(marker);
}*/
moveToPosition(LatLng latLng) async {
GoogleMapController mapController = await _googleMapController.future;
mapController.animateCamera(CameraUpdate.newCameraPosition(
CameraPosition(target: latLng, zoom: 15)));
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _getMap(),
);
}
Widget _getMarker() {
return Container(
width: 25,
height: 25,
padding: EdgeInsets.all(2),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(100),
boxShadow: [
BoxShadow(
color: Colors.grey,
offset: Offset(0, 3),
spreadRadius: 4,
blurRadius: 6)
]),
child: ClipOval(child: Image.asset("assets/img/u1.png")),
);
}
Widget _getMap() {
return Stack(
children: [
GoogleMap(
initialCameraPosition: _cameraPosition!,
mapType: MapType.normal,
onMapCreated: (GoogleMapController controller) {
if (!_googleMapController.isCompleted) {
_googleMapController.complete(controller);
}
},
polylines: _polylines,
markers: _markers,
),
Positioned.fill(
child: Align(alignment: Alignment.center, child: _getMarker()))
],
);
}
}
Loading…
Cancel
Save