Tracking funkció fejlesztése
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:terepi_seged/models/track.dart';
|
||||
import 'package:terepi_seged/pages/tracking/presentation/controllers/tracking_controller.dart';
|
||||
|
||||
class TrackListItem extends StatelessWidget {
|
||||
final Track track;
|
||||
|
||||
const TrackListItem({
|
||||
super.key,
|
||||
required this.track,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Obx(() {
|
||||
final ctrl = TrackingController.to;
|
||||
final isOverlay = ctrl.overlayTrackIds.contains(track.id);
|
||||
|
||||
return ListTile(
|
||||
leading: CircleAvatar(
|
||||
backgroundColor: isOverlay
|
||||
? Colors.blue.withOpacity(0.2)
|
||||
: Theme.of(context).colorScheme.surfaceVariant,
|
||||
child: Icon(Icons.route,
|
||||
color: isOverlay ? Colors.blue : Colors.grey, size: 20),
|
||||
),
|
||||
title: Text(track.name, style: const TextStyle(fontSize: 13)),
|
||||
subtitle: Text(
|
||||
'${_fmtDist(track.distanceMeters)} · '
|
||||
'${track.durationFormatted} · '
|
||||
'${track.pointCount} pt',
|
||||
style: const TextStyle(fontSize: 11),
|
||||
),
|
||||
trailing: Row(mainAxisSize: MainAxisSize.min, children: [
|
||||
// Overlay kapcsoló
|
||||
IconButton(
|
||||
icon: Icon(
|
||||
isOverlay ? Icons.layers : Icons.layers_outlined,
|
||||
color: isOverlay ? Colors.blue : null,
|
||||
size: 20,
|
||||
),
|
||||
tooltip: isOverlay ? 'Elrejt' : 'Mutat a térképen',
|
||||
onPressed: () {
|
||||
ctrl.toggleTrackOverlay(track.id!);
|
||||
// Ha bekapcsolta → zárjuk be a sheet-et
|
||||
// hogy lássa a térképet
|
||||
if (!isOverlay) Navigator.pop(context);
|
||||
},
|
||||
),
|
||||
|
||||
// Export
|
||||
IconButton(
|
||||
icon: const Icon(Icons.share, size: 20),
|
||||
onPressed: () => ctrl.exportTrack(track),
|
||||
),
|
||||
]),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
String _fmtDist(double m) => m < 1000
|
||||
? '${m.toStringAsFixed(0)} m'
|
||||
: '${(m / 1000).toStringAsFixed(2)} km';
|
||||
}
|
||||
Reference in New Issue
Block a user