made tracking icon clickable
This commit is contained in:
@@ -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<String, dynamic>? existingData;
|
||||
|
||||
@@ -49,8 +51,10 @@ class ExcursionMain extends StatefulWidget {
|
||||
class _ExcursionMainState extends State<ExcursionMain> {
|
||||
/// 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<ExcursionMain> {
|
||||
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<ExcursionMain> {
|
||||
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<ExcursionMain> {
|
||||
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<bool>(
|
||||
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<ExcursionMain> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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<ExcursionMain> {
|
||||
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<ExcursionMain> {
|
||||
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<ExcursionMain> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user