// import 'package:fforte/screens/helper/snack_bar_helper.dart'; import 'package:flutter/material.dart'; import 'package:flutter_map/flutter_map.dart'; import 'package:geolocator/geolocator.dart'; import 'package:latlong2/latlong.dart'; // import 'package:geocoding/geocoding.dart'; import 'package:fforte/l10n/app_localizations.dart'; class Karte extends StatefulWidget { final TextEditingController beiOrtC; final TextEditingController ortInfoC; final TextEditingController decLngC; final TextEditingController decLatC; final Position currentPosition; const Karte( {super.key, required this.currentPosition, required this.beiOrtC, required this.ortInfoC, required this.decLngC, required this.decLatC}); @override KarteState createState() => KarteState(); } class KarteState extends State { Marker? currentMarker; LatLng? selectedPosition; bool saveVisible = false; @override void initState() { super.initState(); currentMarker = Marker( point: LatLng( widget.currentPosition.latitude, widget.currentPosition.longitude), child: const Icon( Icons.location_on, color: Colors.red, )); saveVisible = true; } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(AppLocalizations.of(context)!.map), actions: [ Visibility( visible: saveVisible, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: ElevatedButton.icon( onPressed: () async { if (currentMarker != null) { setState(() { widget.decLatC.text = currentMarker!.point.latitude.toString(); widget.decLngC.text = currentMarker!.point.longitude.toString(); }); } if (context.mounted) Navigator.pop(context, currentMarker?.point); }, icon: const Icon(Icons.save), label: Text(AppLocalizations.of(context)!.saveMap), style: ElevatedButton.styleFrom( padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), ), ), ), ), ], ), body: FlutterMap( mapController: MapController(), options: MapOptions( interactionOptions: const InteractionOptions( flags: InteractiveFlag.pinchZoom | InteractiveFlag.drag | InteractiveFlag.pinchMove), initialCenter: LatLng(widget.currentPosition.latitude, widget.currentPosition.longitude), initialZoom: 16.0, onTap: _handleTap, ), children: [ TileLayer( urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', userAgentPackageName: 'de.lupus.apps', ), MarkerLayer(markers: [currentMarker!]), ]), ); } _handleTap(TapPosition position, LatLng latlng) { setState(() { currentMarker = Marker( width: 80.0, height: 80.0, point: latlng, child: const Icon( Icons.location_on, color: Colors.red, ), ); // selectedPosition = latlng; saveVisible = true; }); // ScaffoldMessenger.of(context).showSnackBar(SnackBar( // content: Text( // "${AppLocalizations.of(context)!.markerSet}\n${selectedPosition!.latitude}\n${selectedPosition!.longitude}"))); } }