diff --git a/lib/screens/excursion/excursion_main.dart b/lib/screens/excursion/excursion_main.dart index b569732..a8f8b93 100644 --- a/lib/screens/excursion/excursion_main.dart +++ b/lib/screens/excursion/excursion_main.dart @@ -29,8 +29,10 @@ import 'package:shared_preferences/shared_preferences.dart'; class ExcursionMain extends StatefulWidget { /// Whether this is a template excursion final bool isTemplate; + /// Whether the excursion data has been sent to the server final bool isSent; + /// Existing excursion data for editing final Map? existingData; @@ -49,8 +51,10 @@ class ExcursionMain extends StatefulWidget { class _ExcursionMainState extends State { /// Current step in the form int currentStep = 0; + /// Whether this is a template excursion late bool isTemplate; + /// Current GPS position Position currentPosition = Position( longitude: 10.0, @@ -181,7 +185,8 @@ class _ExcursionMainState extends State { rmap["BLand"]!["controller"]!.text = prefs.getString('bLand') ?? ""; }); - rmap["Datum"]!["controller"]!.text = DateTime.now().toString().split(" ").first; + rmap["Datum"]!["controller"]!.text = + DateTime.now().toString().split(" ").first; rmap["Sent"]!["controller"]!.text = "0"; } @@ -224,7 +229,8 @@ class _ExcursionMainState extends State { Datum( initDatum: DateTime.now(), onDateChanged: (date) { - rmap["Datum"]!["controller"]!.text = date.toString().split(" ").first; + rmap["Datum"]!["controller"]!.text = + date.toString().split(" ").first; }, name: AppLocalizations.of(context)!.date, ), @@ -371,51 +377,60 @@ class _ExcursionMainState extends State { ElevatedButton( onPressed: () async { // Check for always permission before starting tracking - LocationPermission permission = await Geolocator.checkPermission(); + LocationPermission permission = + await Geolocator.checkPermission(); if (permission != LocationPermission.always) { if (context.mounted) { bool? shouldContinue = await showDialog( context: context, builder: (context) => AlertDialog( - title: Text(AppLocalizations.of(context)!.trackingPermissionTitle), - content: Text(AppLocalizations.of(context)!.trackingPermissionContent), + title: Text(AppLocalizations.of(context)! + .trackingPermissionTitle), + content: Text(AppLocalizations.of(context)! + .trackingPermissionContent), actions: [ TextButton( - onPressed: () => Navigator.of(context).pop(false), - child: Text(AppLocalizations.of(context)!.cancel), + onPressed: () => + Navigator.of(context).pop(false), + child: + Text(AppLocalizations.of(context)!.cancel), ), TextButton( onPressed: () async { await Geolocator.openAppSettings(); - if (context.mounted) Navigator.of(context).pop(true); + if (context.mounted) + Navigator.of(context).pop(true); }, - child: Text(AppLocalizations.of(context)!.openSettings), + child: Text( + AppLocalizations.of(context)!.openSettings), ), ], ), ); - + if (shouldContinue != true) { return; } - + // Wait for user to change settings and return // Try checking the permission multiple times for (int i = 0; i < 5; i++) { await Future.delayed(const Duration(seconds: 1)); if (!context.mounted) return; - + permission = await Geolocator.checkPermission(); if (permission == LocationPermission.always) { break; } - + // If this is the last attempt and we still don't have permission - if (i == 4 && permission != LocationPermission.always) { + if (i == 4 && + permission != LocationPermission.always) { if (context.mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: Text(AppLocalizations.of(context)!.permissionNotGranted), + content: Text(AppLocalizations.of(context)! + .permissionNotGranted), duration: const Duration(seconds: 3), ), ); @@ -425,20 +440,21 @@ class _ExcursionMainState extends State { } } } - + if (context.mounted) { await Navigator.push(context, MaterialPageRoute( - builder: (context) { - return Tracking( - weg: rmap["Weg"]!["controller"]!, - startPosition: currentPosition, - ); - }, - )); + builder: (context) { + return Tracking( + weg: rmap["Weg"]!["controller"]!, + startPosition: currentPosition, + ); + }, + )); } setState(() {}); }, - child: Text(AppLocalizations.of(context)!.trackingAnAusschalten), + child: + Text(AppLocalizations.of(context)!.trackingAnAusschalten), ), const SizedBox(height: 10), @@ -559,9 +575,9 @@ class _ExcursionMainState extends State { child: Text(AppLocalizations.of(context)!.nein), ), TextButton( - onPressed: () { - saveTemplate(getFieldsText(), DatabasesEnum.excursion); - Navigator.of(context).pop(1); + onPressed: () { + saveTemplate(getFieldsText(), DatabasesEnum.excursion); + Navigator.of(context).pop(1); }, child: Text(AppLocalizations.of(context)!.leaveAndSaveTemplate), ), @@ -599,12 +615,25 @@ class _ExcursionMainState extends State { appBar: AppBar( title: Text(AppLocalizations.of(context)!.excursion), actions: [ - Image.asset( - TrackingService().isTracking - ? "assets/icons/tracking_on.png" - : "assets/icons/tracking_off.png", - width: 40, - ), + IconButton( + onPressed: () async { + if (context.mounted) { + await Navigator.push(context, MaterialPageRoute( + builder: (context) { + return Tracking( + weg: rmap["Weg"]!["controller"]!, + startPosition: currentPosition, + ); + }, + )); + } + }, + icon: Image.asset( + TrackingService().isTracking + ? "assets/icons/tracking_on.png" + : "assets/icons/tracking_off.png", + width: 40, + )), ], ), body: PageTransitionSwitcher( @@ -691,4 +720,3 @@ class _ExcursionMainState extends State { ); } } -