// 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, )); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(AppLocalizations.of(context)!.map), actions: [ Visibility( visible: saveVisible, child: Row( children: [ Text(AppLocalizations.of(context)!.saveMap), TextButton( onPressed: () async { // try { // List placemarks = // await placemarkFromCoordinates( // currentMarker!.point.latitude, // currentMarker!.point.longitude); // // widget.beiOrtC.text = placemarks.first.locality!; // widget.ortInfoC.text = placemarks.first.street!; // } catch (e) { // // // // TODO Localization // if (context.mounted) { // SnackBarHelper.showSnackBarMessage( // context, "Geocoding error"); // } // debugPrint(e.toString()); // } if (currentMarker != null) { setState(() { widget.decLatC.text = currentMarker!.point.latitude.toString(); widget.decLngC.text = currentMarker!.point.longitude.toString(); }); } if (context.mounted) Navigator.pop(context); }, child: const Icon(Icons.save), ), ], ), ), ], ), 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: 'com.example.app', ), 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}"))); } }