revert some things ig?
This commit is contained in:
@@ -112,11 +112,82 @@ class _AddCamMainState extends State<AddCamMain> {
|
||||
return puff;
|
||||
}
|
||||
|
||||
bool isLoadingPosition = false;
|
||||
|
||||
Future<Position> _initializePosition() async {
|
||||
try {
|
||||
final position = await GeolocatorService.deteterminePosition();
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
currentPosition = position;
|
||||
isLoadingPosition = false;
|
||||
// Update the text controllers with new position
|
||||
rmap["DECLAT"]!["controller"]!.text = position.latitude.toString();
|
||||
rmap["DECLNG"]!["controller"]!.text = position.longitude.toString();
|
||||
});
|
||||
}
|
||||
return position;
|
||||
} catch (error) {
|
||||
if (!mounted) {
|
||||
return currentPosition;
|
||||
}
|
||||
|
||||
if (error is LocationDisabledException) {
|
||||
SnackBarHelper.showSnackBarMessage(
|
||||
context,
|
||||
AppLocalizations.of(context)!.locationDisabled,
|
||||
);
|
||||
} else if (error is LocationForbiddenException) {
|
||||
SnackBarHelper.showSnackBarMessage(
|
||||
context,
|
||||
AppLocalizations.of(context)!.locationForbidden,
|
||||
);
|
||||
}
|
||||
|
||||
setState(() {
|
||||
isLoadingPosition = false;
|
||||
});
|
||||
return currentPosition;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
// updates the currentPosition var after the _determine position has finished. Means user view updates with his live location
|
||||
super.initState();
|
||||
|
||||
isTemplate = widget.isTemplate;
|
||||
|
||||
// If a template is edited this fills in the existing values
|
||||
if (widget.existingData?.isNotEmpty ?? false) {
|
||||
for (var key in widget.existingData!.keys) {
|
||||
rmap[key]!["controller"]!.text =
|
||||
widget.existingData?[key].toString() ?? "";
|
||||
}
|
||||
} else {
|
||||
// If it is not a template set default values
|
||||
rmap["Datum"]!["controller"]!.text = DateTime.now().toString();
|
||||
rmap["Status"]!["controller"]!.text = "aktiv";
|
||||
rmap["FotoFilm"]!["controller"]!.text = "Foto";
|
||||
rmap["MEZ"]!["controller"]!.text = "Sommerzeit";
|
||||
rmap["Platzung"]!["controller"]!.text = "";
|
||||
}
|
||||
|
||||
// Set initial default position
|
||||
rmap["DECLAT"]!["controller"]!.text = currentPosition.latitude.toString();
|
||||
rmap["DECLNG"]!["controller"]!.text = currentPosition.longitude.toString();
|
||||
|
||||
// Try to get current position
|
||||
GeolocatorService.deteterminePosition()
|
||||
.then((result) => currentPosition = result)
|
||||
.then((result) {
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
currentPosition = result;
|
||||
// Update coordinates after getting the position
|
||||
rmap["DECLAT"]!["controller"]!.text = result.latitude.toString();
|
||||
rmap["DECLNG"]!["controller"]!.text = result.longitude.toString();
|
||||
});
|
||||
}
|
||||
})
|
||||
.catchError((error) {
|
||||
if (error is LocationDisabledException) {
|
||||
if (mounted) {
|
||||
@@ -135,28 +206,6 @@ class _AddCamMainState extends State<AddCamMain> {
|
||||
}
|
||||
return currentPosition;
|
||||
});
|
||||
// select initial werte
|
||||
rmap["DECLAT"]!["controller"]!.text = currentPosition.latitude.toString();
|
||||
rmap["DECLNG"]!["controller"]!.text = currentPosition.longitude.toString();
|
||||
|
||||
isTemplate = widget.isTemplate;
|
||||
|
||||
// If a template is edited this fills in the existing values
|
||||
if (widget.existingData?.isNotEmpty ?? false) {
|
||||
for (var key in widget.existingData!.keys) {
|
||||
rmap[key]!["controller"]!.text =
|
||||
widget.existingData?[key].toString() ?? "";
|
||||
}
|
||||
} else {
|
||||
// If it is not a template set default values
|
||||
rmap["Datum"]!["controller"]!.text = DateTime.now().toString();
|
||||
rmap["Status"]!["controller"]!.text = "aktiv";
|
||||
rmap["FotoFilm"]!["controller"]!.text = "Foto";
|
||||
rmap["MEZ"]!["controller"]!.text = "Sommerzeit";
|
||||
rmap["Platzung"]!["controller"]!.text = "";
|
||||
}
|
||||
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -291,6 +340,24 @@ class _AddCamMainState extends State<AddCamMain> {
|
||||
const SizedBox(width: 15),
|
||||
ElevatedButton(
|
||||
onPressed: () async {
|
||||
setState(() {
|
||||
isLoadingPosition = true;
|
||||
});
|
||||
|
||||
try {
|
||||
await _initializePosition();
|
||||
} catch (e) {
|
||||
// Error already handled in _initializePosition
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
isLoadingPosition = false;
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!mounted) return;
|
||||
|
||||
final result = await Navigator.of(context).push<LatLng>(
|
||||
MaterialPageRoute(
|
||||
builder: (context) {
|
||||
@@ -304,7 +371,8 @@ class _AddCamMainState extends State<AddCamMain> {
|
||||
},
|
||||
),
|
||||
);
|
||||
if (result != null) {
|
||||
|
||||
if (result != null && mounted) {
|
||||
setState(() {
|
||||
currentPosition = Position(
|
||||
latitude: result.latitude,
|
||||
@@ -318,10 +386,33 @@ class _AddCamMainState extends State<AddCamMain> {
|
||||
speed: 0.0,
|
||||
speedAccuracy: 0.0,
|
||||
);
|
||||
rmap["DECLAT"]!["controller"]!.text = result.latitude.toString();
|
||||
rmap["DECLNG"]!["controller"]!.text = result.longitude.toString();
|
||||
isLoadingPosition = false;
|
||||
});
|
||||
} else if (mounted) {
|
||||
setState(() {
|
||||
isLoadingPosition = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
child: Text(AppLocalizations.of(context)!.openMap),
|
||||
child: isLoadingPosition
|
||||
? Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
SizedBox(
|
||||
width: 16,
|
||||
height: 16,
|
||||
child: CircularProgressIndicator(
|
||||
strokeWidth: 2,
|
||||
color: Theme.of(context).colorScheme.onPrimary,
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
Text(AppLocalizations.of(context)!.openMap),
|
||||
],
|
||||
)
|
||||
: Text(AppLocalizations.of(context)!.openMap),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -41,6 +41,7 @@ class KarteState extends State<Karte> {
|
||||
Icons.location_on,
|
||||
color: Colors.red,
|
||||
));
|
||||
saveVisible = true;
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -51,42 +52,26 @@ class KarteState extends State<Karte> {
|
||||
actions: [
|
||||
Visibility(
|
||||
visible: saveVisible,
|
||||
child: Row(
|
||||
children: [
|
||||
Text(AppLocalizations.of(context)!.saveMap),
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
// try {
|
||||
// List<Placemark> placemarks =
|
||||
// await placemarkFromCoordinates(
|
||||
// currentMarker!.point.latitude,
|
||||
// currentMarker!.point.longitude);
|
||||
//
|
||||
// widget.beiOrtC.text = placemarks.first.locality!;
|
||||
// widget.ortInfoC.text = placemarks.first.street!;
|
||||
// } catch (e) {
|
||||
// //
|
||||
// // !!! 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),
|
||||
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),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user