From fb0cf85d11cbc56f15208bd51f1daa30734559ee Mon Sep 17 00:00:00 2001 From: Nico Date: Fri, 9 May 2025 23:10:55 +0200 Subject: [PATCH] repaired editing function of templates --- lib/screens/addCam/add_cam_main.dart | 42 +++++++++++++++---- lib/screens/helper/dialog_helper.dart | 4 +- lib/screens/sharedWidgets/var_text_field.dart | 2 +- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/lib/screens/addCam/add_cam_main.dart b/lib/screens/addCam/add_cam_main.dart index 3d31a7d..2051b3f 100644 --- a/lib/screens/addCam/add_cam_main.dart +++ b/lib/screens/addCam/add_cam_main.dart @@ -82,21 +82,21 @@ class _AddCamMainState extends State { DateTime? kontDat = DateTime.now(); DateTime? protoAm = DateTime.now(); - static Map> rmap = { + Map> rmap = { // Step 1 "Standort": { "controller": TextEditingController(), "required": true, }, "Status": { "controller": TextEditingController(), "required": true, }, "Betreuung": { "controller": TextEditingController(), "required": false, }, "CID": { "controller": TextEditingController(), "required": true, }, "FFTyp": { "controller": TextEditingController(), "required": true, }, - "Mez": { "controller": TextEditingController(), "required": true, }, + "MEZ": { "controller": TextEditingController(), "required": true, }, "KSchloNr": { "controller": TextEditingController(), "required": false, }, "Rudel": { "controller": TextEditingController(), "required": true, }, // Step 2 "DECLNG": { "controller": TextEditingController(), "required": false, }, "DECLAT": { "controller": TextEditingController(), "required": false, }, - "Bland": { "controller": TextEditingController(), "required": true, }, + "BLand": { "controller": TextEditingController(), "required": true, }, "Lkr": { "controller": TextEditingController(), "required": true, }, "BeiOrt": { "controller": TextEditingController(), "required": true, }, "OrtInfo": { "controller": TextEditingController(), "required": false, }, @@ -134,14 +134,14 @@ class _AddCamMainState extends State { // "Betreuung": { "controller": TextEditingController(), "required": false, }, // "CID": { "controller": TextEditingController(), "required": true, }, // "FFTyp": { "controller": TextEditingController(), "required": true, }, - // "Mez": { "controller": TextEditingController(), "required": true, }, + // "MEZ": { "controller": TextEditingController(), "required": true, }, // "KSchloNr": { "controller": TextEditingController(), "required": false, }, // "Rudel": { "controller": TextEditingController(), "required": true, }, // // // Step 2 // "DECLNG": { "controller": TextEditingController(), "required": false, }, // "DECLAT": { "controller": TextEditingController(), "required": false, }, - // "Bland": { "controller": TextEditingController(), "required": true, }, + // "BLand": { "controller": TextEditingController(), "required": true, }, // "Lkr": { "controller": TextEditingController(), "required": true, }, // "BeiOrt": { "controller": TextEditingController(), "required": true, }, // "OrtInfo": { "controller": TextEditingController(), "required": false, }, @@ -239,12 +239,28 @@ class _AddCamMainState extends State { context, AppLocalizations.of(context)!.locationForbidden); } // select initial werte - rmap["Mez"]!["controller"]!.text = selectedMEZ; + rmap["MEZ"]!["controller"]!.text = selectedMEZ; rmap["Status"]!["controller"]!.text = selectedStatus; + + // TODO ADD THIS AGAIN BUT RIGHT // If a template is edited this fills in the existing values + var firstRun = true; + if (widget.existingData?.isNotEmpty ?? false) { + for (var key in widget.existingData!.keys) { + if (firstRun) { + firstRun = false; + continue; + } + rmap[key]!["controller"]!.text = widget.existingData?[key].toString() ?? ""; + } + } + + + + // if (widget.isTemplate || widget.isFinished && widget.existingData != null) { // cid.text = widget.existingData!['CID'] ?? ""; // rudelC.text = widget.existingData!['Rudel'] ?? ""; @@ -286,6 +302,14 @@ class _AddCamMainState extends State { super.initState(); } + @override + void dispose() { + for (String key in rmap.keys) { + rmap[key]!["controller"].dispose(); + } + super.dispose(); + } + // checks if required fields are not empty. If one is the name will be returned // TODO rewrite // List validateData() { @@ -416,7 +440,7 @@ class _AddCamMainState extends State { onMEZChanged: (mez) { setState(() { selectedMEZ = mez; - rmap["Mez"]!["controller"]!.text = mez; + rmap["MEZ"]!["controller"]!.text = mez; }); }, ), @@ -507,7 +531,7 @@ class _AddCamMainState extends State { ), // -------------------- VarTextField( - textController: rmap["Bland"]!["controller"]!, + textController: rmap["BLand"]!["controller"]!, localization: AppLocalizations.of(context)!.bland, dbName: "BLand", required: true, @@ -804,7 +828,7 @@ class _AddCamMainState extends State { if (empty == true) { DialogHelper.showTemplateDialog( - context, getFieldsText()); + context, getFieldsText(), widget.existingData?.isNotEmpty ?? false); return; } else if (empty == false) { await DialogHelper.showSaveOptionsDialog( diff --git a/lib/screens/helper/dialog_helper.dart b/lib/screens/helper/dialog_helper.dart index cdc984e..3fe94bc 100644 --- a/lib/screens/helper/dialog_helper.dart +++ b/lib/screens/helper/dialog_helper.dart @@ -10,7 +10,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class DialogHelper { // Function to show the dialog where the user has to choose if he want to safe his values as a template static Future showTemplateDialog(BuildContext context, - Map saveData) async { + Map saveData, bool update) async { return showDialog( context: context, barrierDismissible: false, @@ -25,7 +25,7 @@ class DialogHelper { child: Text(AppLocalizations.of(context)!.cancel)), TextButton( onPressed: () { - saveTemplate(saveData, DatabasesEnum.place, true); + saveTemplate(saveData, DatabasesEnum.place, update); Navigator.pushNamedAndRemoveUntil( context, '/home', (route) => false); }, diff --git a/lib/screens/sharedWidgets/var_text_field.dart b/lib/screens/sharedWidgets/var_text_field.dart index 8fbba0a..25a9c6d 100644 --- a/lib/screens/sharedWidgets/var_text_field.dart +++ b/lib/screens/sharedWidgets/var_text_field.dart @@ -47,7 +47,7 @@ class _VarTextFieldState extends State { } Future>> _loadData() async { - if (widget.dbDesignation == DatabasesEnum.excursion) { + if (widget.dbDesignation == DatabasesEnum.place) { var entries = await PlaceDBHelper().getAllMainEntries(); var templatesEntries = await PlaceDBHelper().getAllTemplates(); return [...entries, ...templatesEntries];