From 9431232e911a26d8569c0d7dcb49cb8d93a4d657 Mon Sep 17 00:00:00 2001 From: Nico Date: Thu, 5 Jun 2025 18:44:18 +0200 Subject: [PATCH] fixed error where complete entries are shown as incomplete and made ui enhancements to overview --- lib/screens/excursion/excursion_main.dart | 2 +- lib/screens/excursion/widgets/tracking.dart | 2 +- .../helper/add_entries_dialog_helper.dart | 2 +- .../helper/view_entries_dialog_helper.dart | 16 +-- .../sharedMethods/delete_main_entries.dart | 8 +- .../sharedMethods/delete_templates.dart | 8 +- lib/screens/sharedMethods/http_request.dart | 1 - lib/screens/viewEntries/view_cams.dart | 115 ++++++++---------- 8 files changed, 70 insertions(+), 84 deletions(-) diff --git a/lib/screens/excursion/excursion_main.dart b/lib/screens/excursion/excursion_main.dart index db37b3b..34db4e5 100644 --- a/lib/screens/excursion/excursion_main.dart +++ b/lib/screens/excursion/excursion_main.dart @@ -584,7 +584,7 @@ class _ExcursionMainState extends State { bool pop = await AddEntriesDialogHelper.showSaveOptionsDialog( context, getFieldsText(), - widget.isTemplate, + isTemplate, DatabasesEnum.excursion, ); if (pop && context.mounted) Navigator.of(context).pop(); diff --git a/lib/screens/excursion/widgets/tracking.dart b/lib/screens/excursion/widgets/tracking.dart index b2ccdb3..eaf68dd 100644 --- a/lib/screens/excursion/widgets/tracking.dart +++ b/lib/screens/excursion/widgets/tracking.dart @@ -215,7 +215,7 @@ class _TrackingState extends State { currentPosition!.longitude, ), radius: currentPosition!.accuracy, - color: Colors.blue.withOpacity(0.2), + color: Colors.blue.withAlpha(2), borderColor: Colors.blue, borderStrokeWidth: 2, ), diff --git a/lib/screens/helper/add_entries_dialog_helper.dart b/lib/screens/helper/add_entries_dialog_helper.dart index ce5fb13..200c107 100644 --- a/lib/screens/helper/add_entries_dialog_helper.dart +++ b/lib/screens/helper/add_entries_dialog_helper.dart @@ -258,7 +258,7 @@ class AddEntriesDialogHelper { ); } } catch (e) { - debugPrint(e.toString()); + print(e.toString()); } }, child: Text(AppLocalizations.of(context)!.justsave), diff --git a/lib/screens/helper/view_entries_dialog_helper.dart b/lib/screens/helper/view_entries_dialog_helper.dart index 9a74762..54a709f 100644 --- a/lib/screens/helper/view_entries_dialog_helper.dart +++ b/lib/screens/helper/view_entries_dialog_helper.dart @@ -5,7 +5,7 @@ import 'package:fforte/screens/sharedMethods/delete_templates.dart'; import 'package:flutter/material.dart'; class ViewEntriesDialogHelper { - static void deleteAllMainEntries( + static Future deleteAllMainEntries( BuildContext context, DatabasesEnum dbType, ) async { @@ -24,10 +24,10 @@ class ViewEntriesDialogHelper { ), actions: [ TextButton( - onPressed: () { - DeleteMainEntries.deleteAll(dbType); + onPressed: () async { + await DeleteMainEntries.deleteAll(dbType); - Navigator.of(context).pop(); + if (context.mounted) Navigator.of(context).pop(); }, child: Text(AppLocalizations.of(context)!.deleteEverything), ), @@ -43,7 +43,7 @@ class ViewEntriesDialogHelper { ); } - static void deleteAllTemplates( + static Future deleteAllTemplates( BuildContext context, DatabasesEnum dbType, ) async { @@ -62,9 +62,9 @@ class ViewEntriesDialogHelper { ), actions: [ TextButton( - onPressed: () { - DeleteTemplates.deleteAll(dbType); - Navigator.of(context).pop(); + onPressed: () async { + await DeleteTemplates.deleteAll(dbType); + if (context.mounted) Navigator.of(context).pop(); }, child: Text(AppLocalizations.of(context)!.deleteEverything), ), diff --git a/lib/screens/sharedMethods/delete_main_entries.dart b/lib/screens/sharedMethods/delete_main_entries.dart index 55286e5..7a7fdf9 100644 --- a/lib/screens/sharedMethods/delete_main_entries.dart +++ b/lib/screens/sharedMethods/delete_main_entries.dart @@ -4,7 +4,7 @@ import 'package:fforte/methods/excursion_db_helper.dart'; import 'package:fforte/methods/place_db_helper.dart'; class DeleteMainEntries { - static void deleteAll(DatabasesEnum dbType) { + static Future deleteAll(DatabasesEnum dbType) async { IDb? db; if (dbType == DatabasesEnum.place) { @@ -12,10 +12,10 @@ class DeleteMainEntries { } else if (dbType == DatabasesEnum.excursion) { db = ExcursionDBHelper(); } - db!.deleteAllMainEntries(); + await db!.deleteAllMainEntries(); } - static void deleteSingle(DatabasesEnum dbType, int id) { + static Future deleteSingle(DatabasesEnum dbType, int id) async { IDb? db; if (dbType == DatabasesEnum.place) { @@ -24,6 +24,6 @@ class DeleteMainEntries { db = ExcursionDBHelper(); } - db!.deleteMainEntryById(id.toString()); + await db!.deleteMainEntryById(id.toString()); } } diff --git a/lib/screens/sharedMethods/delete_templates.dart b/lib/screens/sharedMethods/delete_templates.dart index ec1be48..d2d72a3 100644 --- a/lib/screens/sharedMethods/delete_templates.dart +++ b/lib/screens/sharedMethods/delete_templates.dart @@ -5,7 +5,7 @@ import 'package:fforte/methods/place_db_helper.dart'; class DeleteTemplates { - static void deleteSingle(DatabasesEnum dbType, String id) { + static Future deleteSingle(DatabasesEnum dbType, String id) async { IDb? db; if (dbType == DatabasesEnum.place) { @@ -14,10 +14,10 @@ class DeleteTemplates { db = ExcursionDBHelper(); } - db!.deleteTemplateById(id); + await db!.deleteTemplateById(id); } - static void deleteAll(DatabasesEnum dbType) { + static Future deleteAll(DatabasesEnum dbType) async { IDb? db; if (dbType == DatabasesEnum.place) { @@ -26,6 +26,6 @@ class DeleteTemplates { db = ExcursionDBHelper(); } - db!.deleteAllMainEntries(); + await db!.deleteAllMainEntries(); } } diff --git a/lib/screens/sharedMethods/http_request.dart b/lib/screens/sharedMethods/http_request.dart index 4ebdbd1..1f95684 100644 --- a/lib/screens/sharedMethods/http_request.dart +++ b/lib/screens/sharedMethods/http_request.dart @@ -1,4 +1,3 @@ -// TODO remove sent import 'dart:convert'; import 'package:dio/dio.dart'; diff --git a/lib/screens/viewEntries/view_cams.dart b/lib/screens/viewEntries/view_cams.dart index 4777d0d..724b153 100644 --- a/lib/screens/viewEntries/view_cams.dart +++ b/lib/screens/viewEntries/view_cams.dart @@ -11,6 +11,7 @@ import 'package:flutter/material.dart'; import 'package:fforte/l10n/app_localizations.dart'; import 'package:flutter_map/flutter_map.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; +import 'package:intl/intl.dart'; import 'package:latlong2/latlong.dart'; // * Site that shows all entries in the databases @@ -28,11 +29,13 @@ class _ViewEntriesState extends State { List> templates = []; List marker = []; + final DateFormat dateFormat = DateFormat('dd.MM.yyyy'); + // loads the entries @override void initState() { - super.initState(); reloadAllEntries(); + super.initState(); } Future reloadAllEntries() async { @@ -89,7 +92,9 @@ class _ViewEntriesState extends State { Tab(text: AppLocalizations.of(context)!.map), ], ), - title: widget.dbType == DatabasesEnum.place ? Text(AppLocalizations.of(context)!.viewplacesappbar) : Text(AppLocalizations.of(context)!.viewExcursionen) , + title: widget.dbType == DatabasesEnum.place + ? Text(AppLocalizations.of(context)!.viewplacesappbar) + : Text(AppLocalizations.of(context)!.viewExcursionen), ), body: TabBarView( children: [ @@ -97,11 +102,14 @@ class _ViewEntriesState extends State { child: Scaffold( floatingActionButton: FloatingActionButton( child: const Icon(Icons.delete), - onPressed: () { - ViewEntriesDialogHelper.deleteAllMainEntries( + onPressed: () async { + await ViewEntriesDialogHelper.deleteAllMainEntries( context, widget.dbType, ); + setState(() { + reloadAllEntries(); + }); }, ), body: Column( @@ -170,15 +178,15 @@ class _ViewEntriesState extends State { ], ), child: ListTile( - title: Text('Standort ${index + 1}'), + title: Text( + '${widget.dbType == DatabasesEnum.place ? AppLocalizations.of(context)!.justplace : AppLocalizations.of(context)!.excursion} ${mainEntries[index]["ID"]}'), subtitle: Text( - 'ID: ${mainEntries[index]['ID']} DATUM: ${widget.dbType == DatabasesEnum.place ? mainEntries[index]['Datum'] : mainEntries[index]["LogDat"]}', + dateFormat.format(DateTime.parse(mainEntries[index]["Datum"])), ), trailing: Checkbox( - value: - mainEntries[index]['Sent'] == 0 - ? false - : true, + value: mainEntries[index]['Sent'] == 0 + ? false + : true, onChanged: null, ), onTap: () async { @@ -186,14 +194,12 @@ class _ViewEntriesState extends State { Navigator.push( context, MaterialPageRoute( - builder: - (context) => AddCamMain( - isSent: - mainEntries[index]['Sent'] == 1 - ? true - : false, - existingData: mainEntries[index], - ), + builder: (context) => AddCamMain( + isSent: mainEntries[index]['Sent'] == 1 + ? true + : false, + existingData: mainEntries[index], + ), ), ); } else if (widget.dbType == @@ -201,14 +207,12 @@ class _ViewEntriesState extends State { Navigator.push( context, MaterialPageRoute( - builder: - (context) => ExcursionMain( - isSent: - mainEntries[index]['Sent'] == 1 - ? true - : false, - existingData: mainEntries[index], - ), + builder: (context) => ExcursionMain( + isSent: mainEntries[index]['Sent'] == 1 + ? true + : false, + existingData: mainEntries[index], + ), ), ); } @@ -226,11 +230,14 @@ class _ViewEntriesState extends State { child: Scaffold( floatingActionButton: FloatingActionButton( child: const Icon(Icons.delete), - onPressed: () { - ViewEntriesDialogHelper.deleteAllTemplates( + onPressed: () async { + await ViewEntriesDialogHelper.deleteAllTemplates( context, widget.dbType, ); + setState(() { + reloadAllEntries(); + }); }, ), body: Column( @@ -263,16 +270,14 @@ class _ViewEntriesState extends State { ), child: ListTile( onTap: () { - if (widget.dbType == DatabasesEnum.place) { Navigator.push( context, MaterialPageRoute( - builder: - (context) => AddCamMain( - isTemplate: true, - existingData: templates[index], - ), + builder: (context) => AddCamMain( + isTemplate: true, + existingData: templates[index], + ), ), ); } else if (widget.dbType == @@ -280,34 +285,18 @@ class _ViewEntriesState extends State { Navigator.push( context, MaterialPageRoute( - builder: - (context) => ExcursionMain( - isTemplate: true, - existingData: templates[index], - ), + builder: (context) => ExcursionMain( + isTemplate: true, + existingData: templates[index], + ), ), ); } - - - - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: - // (context) => AddCamMain( - // isTemplate: true, - // existingData: templates[index], - // ), - // ), - // ); }, - - - - title: Text('Place ${index + 1}'), + title: Text( + '${widget.dbType == DatabasesEnum.place ? AppLocalizations.of(context)!.justplace : AppLocalizations.of(context)!.excursion} ${templates[index]["ID"]}'), subtitle: Text( - 'ID: ${templates[index]['CID']} DATUM: ${templates[index]['Datum']} RUDEL: ${templates[index]['Rudel']} STATUS: ${templates[index]['Status']}', + dateFormat.format(DateTime.parse(templates[index]["Datum"])), ), ), ); @@ -322,13 +311,11 @@ class _ViewEntriesState extends State { Tab( child: FlutterMap( options: MapOptions( - initialCenter: - marker.isEmpty - ? const LatLng(50, 10) - : marker.first.point, + initialCenter: marker.isEmpty + ? const LatLng(50, 10) + : marker.first.point, interactionOptions: const InteractionOptions( - flags: - InteractiveFlag.pinchZoom | + flags: InteractiveFlag.pinchZoom | InteractiveFlag.drag | InteractiveFlag.pinchMove, ), @@ -337,7 +324,7 @@ class _ViewEntriesState extends State { TileLayer( urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', - userAgentPackageName: 'com.example.app', + userAgentPackageName: 'de.lupus.apps', ), MarkerLayer(markers: marker), ],