Tracking funkció fejlesztése
This commit is contained in:
@@ -37,6 +37,8 @@ class _TrackingTaskHandler extends TaskHandler {
|
||||
// ─── TrackingController ──────────────────────────────────────────────────────
|
||||
|
||||
class TrackingController extends GetxController {
|
||||
static TrackingController get to => Get.find();
|
||||
|
||||
// ── Állapot ────────────────────────────────────────────────────────────────
|
||||
final isRecording = false.obs;
|
||||
final isPaused = false.obs;
|
||||
@@ -60,6 +62,14 @@ class TrackingController extends GetxController {
|
||||
// ── Mentett track-ek listája ────────────────────────────────────────────────
|
||||
final savedTracks = <Track>[].obs;
|
||||
|
||||
// Melyik track-ek látszanak overlay-ként a térképen
|
||||
final overlayTrackIds = <int>[].obs;
|
||||
|
||||
// Betöltött koordináták cache
|
||||
final Map<int, List<LatLng>> _trackCoords = {};
|
||||
|
||||
int get livePointCount => livePoints.length;
|
||||
|
||||
// ── Belső állapot ──────────────────────────────────────────────────────────
|
||||
LocationSource? _source;
|
||||
StreamSubscription<SourcePosition>? _positionSub;
|
||||
@@ -188,6 +198,8 @@ class TrackingController extends GetxController {
|
||||
final finished = track!.copyWith(
|
||||
status: TrackStatus.finished,
|
||||
endTime: DateTime.now(),
|
||||
distanceMeters: _accumulatedDistance,
|
||||
pointCount: livePoints.length,
|
||||
);
|
||||
await _db.updateTrack(finished);
|
||||
currentTrack.value = finished;
|
||||
@@ -209,6 +221,8 @@ class TrackingController extends GetxController {
|
||||
|
||||
Future<void> deleteTrack(int id) async {
|
||||
await _db.deleteTrack(id);
|
||||
overlayTrackIds.remove(id);
|
||||
_trackCoords.remove(id);
|
||||
await loadSavedTracks();
|
||||
}
|
||||
|
||||
@@ -310,4 +324,26 @@ class TrackingController extends GetxController {
|
||||
}
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
// Overlay ki/be kapcsolása — ha bekapcsol, betölti a koordinátákat
|
||||
void toggleTrackOverlay(int trackId) {
|
||||
if (overlayTrackIds.contains(trackId)) {
|
||||
overlayTrackIds.remove(trackId);
|
||||
overlayTrackIds.refresh();
|
||||
} else {
|
||||
overlayTrackIds.add(trackId);
|
||||
overlayTrackIds.refresh();
|
||||
_loadTrackCoords(trackId);
|
||||
}
|
||||
}
|
||||
|
||||
/// Koordináták visszaadása — üres lista ha még nincs betöltve
|
||||
List<LatLng> getCoordsFor(int trackId) => _trackCoords[trackId] ?? [];
|
||||
|
||||
Future<void> _loadTrackCoords(int trackId) async {
|
||||
if (_trackCoords.containsKey(trackId)) return;
|
||||
final pts = await _db.getLatLons(trackId);
|
||||
_trackCoords[trackId] = pts.map((p) => LatLng(p.lat, p.lon)).toList();
|
||||
overlayTrackIds.refresh(); // térkép frissítés
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user