import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_map/flutter_map.dart'; import 'package:latlong2/latlong.dart'; import 'package:libacflutter/Constants.dart'; import 'package:timetrack/data.dart'; class MapPage extends StatefulWidget { MapPage({super.key}); @override State createState() { return _MapPage(); } } class _MapPage extends State { MapController controller = MapController(); LatLng initialPosition = LatLng(0, 0); List PointMap = []; @override void didChangeDependencies() { PointMap = []; var firstPos = SessionData.positions[0]; initialPosition = LatLng(firstPos.latitude, firstPos.longitude); for (var position in SessionData.positions) { PointMap.add(LatLng(position.latitude, position.longitude)); } setState(() {}); super.didChangeDependencies(); } @override void dispose() { print("Map page disposed"); controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Time Tracker - Map View"), backgroundColor: LibACFlutterConstants.TITLEBAR_COLOR, actions: [ IconButton( onPressed: () async { didChangeDependencies(); }, icon: Icon(Icons.refresh), ), ], ), body: GestureDetector( onTap: FocusScope.of(context).unfocus, child: SafeArea( child: FlutterMap( mapController: controller, options: MapOptions( minZoom: 1, maxZoom: 30, initialZoom: 15, initialCenter: initialPosition, keepAlive: false, ), children: [ TileLayer( urlTemplate: "https://tile.openstreetmap.org/{z}/{x}/{y}.png", userAgentPackageName: "dev.zontreck.timetrack", ), PolylineLayer( polylines: [ Polyline( points: PointMap, color: Colors.blue, borderStrokeWidth: 3, borderColor: Colors.blue, ), ], ), RichAttributionWidget( attributions: [ TextSourceAttribution('OpenStreetMap contributors'), ], ), ], ), ), ), ); } }