From d8331e06f510c4725c193285f7c3b7fbd122fc8d Mon Sep 17 00:00:00 2001 From: Nico Date: Sat, 10 May 2025 23:13:12 +0200 Subject: [PATCH] added ability to save entries in excursion_main --- lib/screens/excursion/excursion_main.dart | 203 ++++++++++++---------- 1 file changed, 109 insertions(+), 94 deletions(-) diff --git a/lib/screens/excursion/excursion_main.dart b/lib/screens/excursion/excursion_main.dart index f300fff..84001a0 100644 --- a/lib/screens/excursion/excursion_main.dart +++ b/lib/screens/excursion/excursion_main.dart @@ -7,6 +7,8 @@ import 'package:fforte/screens/excursion/widgets/hund_u_leine.dart'; import 'package:fforte/screens/excursion/widgets/letzter_niederschlag.dart'; import 'package:fforte/screens/excursion/widgets/spur_gefunden.dart'; import 'package:fforte/screens/excursion/widgets/strecke_u_spurbedingungen.dart'; +import 'package:fforte/screens/helper/dialog_helper.dart'; +import 'package:fforte/screens/sharedMethods/check_required.dart'; import 'package:fforte/screens/sharedWidgets/datum.dart'; import 'package:fforte/screens/sharedWidgets/var_text_field.dart'; import 'package:flutter/material.dart'; @@ -22,68 +24,74 @@ class ExcursionMain extends StatefulWidget { class _ExcursionMainState extends State { // all TextEditingController because its easier - Map getFieldsController() { - Map rmap = { + Map> rmap = { // Step 1 - "LogDat": TextEditingController(), - "Rudel": TextEditingController(), - "Teilnehm": TextEditingController(), - "Jahr": TextEditingController(), - "Dauer": TextEditingController(), - "MHund": TextEditingController(), - "MLeine": TextEditingController(), - "BLand": TextEditingController(), - "Lkr": TextEditingController(), - "BeiOrt": TextEditingController(), - "BimaNr": TextEditingController(), - "BimaName": TextEditingController(), - "BimaNutzer": TextEditingController(), - "BimaAGV": TextEditingController(), + "LogDat": { "controller": TextEditingController(), "required": bool, }, + "Rudel": { "controller": TextEditingController(), "required": bool, }, + "Teilnehm": { "controller": TextEditingController(), "required": bool, }, + "Jahr": { "controller": TextEditingController(), "required": bool, }, + "Dauer": { "controller": TextEditingController(), "required": bool, }, + "MHund": { "controller": TextEditingController(), "required": bool, }, + "MLeine": { "controller": TextEditingController(), "required": bool, }, + "BLand": { "controller": TextEditingController(), "required": bool, }, + "Lkr": { "controller": TextEditingController(), "required": bool, }, + "BeiOrt": { "controller": TextEditingController(), "required": bool, }, + "BimaNr": { "controller": TextEditingController(), "required": bool, }, + "BimaName": { "controller": TextEditingController(), "required": bool, }, + "BimaNutzer": { "controller": TextEditingController(), "required": bool, }, + "BimaAGV": { "controller": TextEditingController(), "required": bool, }, // Step 2 - "Wetter": TextEditingController(), - "Temperat": TextEditingController(), - "RegenVor": TextEditingController(), - "KmAuto": TextEditingController(), - "KmFuss": TextEditingController(), - "KmRad": TextEditingController(), - "KmTotal": TextEditingController(), - "KmAuProz": TextEditingController(), - "KmFuProz": TextEditingController(), - "KmRaProz": TextEditingController(), + "Wetter": { "controller": TextEditingController(), "required": bool, }, + "Temperat": { "controller": TextEditingController(), "required": bool, }, + "RegenVor": { "controller": TextEditingController(), "required": bool, }, + "KmAuto": { "controller": TextEditingController(), "required": bool, }, + "KmFuss": { "controller": TextEditingController(), "required": bool, }, + "KmRad": { "controller": TextEditingController(), "required": bool, }, + "KmTotal": { "controller": TextEditingController(), "required": bool, }, + "KmAuProz": { "controller": TextEditingController(), "required": bool, }, + "KmFuProz": { "controller": TextEditingController(), "required": bool, }, + "KmRaProz": { "controller": TextEditingController(), "required": bool, }, // Spur maybe own step? - "SpGut": TextEditingController(), - "SpMittel": TextEditingController(), - "SpSchlecht": TextEditingController(), - "SpurFund": TextEditingController(), - "SpurLang": TextEditingController(), - "SpurTiere": TextEditingController(), - "SpSicher": TextEditingController(), - "WelpenSp": TextEditingController(), - "WelpenAnz": TextEditingController(), - "WpSicher": TextEditingController(), + "SpGut": { "controller": TextEditingController(), "required": bool, }, + "SpMittel": { "controller": TextEditingController(), "required": bool, }, + "SpSchlecht": { "controller": TextEditingController(), "required": bool, }, + "SpurFund": { "controller": TextEditingController(), "required": bool, }, + "SpurLang": { "controller": TextEditingController(), "required": bool, }, + "SpurTiere": { "controller": TextEditingController(), "required": bool, }, + "SpSicher": { "controller": TextEditingController(), "required": bool, }, + "WelpenSp": { "controller": TextEditingController(), "required": bool, }, + "WelpenAnz": { "controller": TextEditingController(), "required": bool, }, + "WpSicher": { "controller": TextEditingController(), "required": bool, }, - "LosungGes": TextEditingController(), - "LosungAnz": TextEditingController(), - "LosungGen": TextEditingController(), - "UrinAnz": TextEditingController(), - "UrinGen": TextEditingController(), - "OestrAnz": TextEditingController(), - "OestrGen": TextEditingController(), - "HaarAnz": TextEditingController(), - "HaarGen": TextEditingController(), - "LosungKm": TextEditingController(), - "GenetiKm": TextEditingController(), - "Hinweise": TextEditingController(), + "LosungGes": { "controller": TextEditingController(), "required": bool, }, + "LosungAnz": { "controller": TextEditingController(), "required": bool, }, + "LosungGen": { "controller": TextEditingController(), "required": bool, }, + "UrinAnz": { "controller": TextEditingController(), "required": bool, }, + "UrinGen": { "controller": TextEditingController(), "required": bool, }, + "OestrAnz": { "controller": TextEditingController(), "required": bool, }, + "OestrGen": { "controller": TextEditingController(), "required": bool, }, + "HaarAnz": { "controller": TextEditingController(), "required": bool, }, + "HaarGen": { "controller": TextEditingController(), "required": bool, }, + "LosungKm": { "controller": TextEditingController(), "required": bool, }, + "GenetiKm": { "controller": TextEditingController(), "required": bool, }, + "Hinweise": { "controller": TextEditingController(), "required": bool, }, // Step 3 - "Bemerk": TextEditingController(), - "IntKomm": TextEditingController(), - "FallNum": TextEditingController(), + "Bemerk": { "controller": TextEditingController(), "required": bool, }, + "IntKomm": { "controller": TextEditingController(), "required": bool, }, + "FallNum": { "controller": TextEditingController(), "required": bool, }, }; - return rmap; + Map getFieldsText() { + Map puff = {}; + + for (var itemKey in rmap.keys) { + puff[itemKey] = rmap[itemKey]!["controller"]!.text; + } + + return puff; } int currentStep = 0; @@ -99,7 +107,7 @@ class _ExcursionMainState extends State { Datum( initDatum: DateTime.now(), onDateChanged: (date) { - getFieldsController()["LogDat"]!.text = date.toString(); + rmap["LogDat"]!["controller"]!.text = date.toString(); }, name: AppLocalizations.of(context)!.date, ), @@ -108,7 +116,7 @@ class _ExcursionMainState extends State { ), // ---------- Pack VarTextField( - textController: getFieldsController()["Rudel"]!, + textController: rmap["Rudel"]!["controller"]!, localization: AppLocalizations.of(context)!.rudel, dbName: "Rudel", required: false, @@ -119,7 +127,7 @@ class _ExcursionMainState extends State { ), // ---------- Participants VarTextField( - textController: getFieldsController()["Teilnehm"]!, + textController: rmap["Teilnehm"]!["controller"]!, localization: AppLocalizations.of(context)!.teilnehmer, dbName: "Teilnehm", required: false, @@ -130,7 +138,7 @@ class _ExcursionMainState extends State { ), // ---------- Duration VarTextField( - textController: getFieldsController()["Dauer"]!, + textController: rmap["Dauer"]!["controller"]!, localization: AppLocalizations.of(context)!.dauer, dbName: "Dauer", required: false, @@ -141,15 +149,15 @@ class _ExcursionMainState extends State { ), // ---------- Dog(leash) HundULeine(onMHundChanged: (mHund, mLeine) { - getFieldsController()["MHund"]!.text = mHund; - getFieldsController()["MLeine"]!.text = mLeine; + rmap["MHund"]!["controller"]!.text = mHund; + rmap["MLeine"]!["controller"]!.text = mLeine; }), const SizedBox( height: 10, ), // ---------- State VarTextField( - textController: getFieldsController()["BLand"]!, + textController: rmap["BLand"]!["controller"]!, localization: AppLocalizations.of(context)!.bland, dbName: "BLand", required: false, @@ -160,7 +168,7 @@ class _ExcursionMainState extends State { ), // ---------- Country VarTextField( - textController: getFieldsController()["Lkr"]!, + textController: rmap["Lkr"]!["controller"]!, localization: AppLocalizations.of(context)!.lkr, dbName: "Lkr", required: false, @@ -171,7 +179,7 @@ class _ExcursionMainState extends State { ), // ---------- By State VarTextField( - textController: getFieldsController()["BeiOrt"]!, + textController: rmap["BeiOrt"]!["controller"]!, localization: AppLocalizations.of(context)!.beiort, dbName: "BeiOrt", required: false, @@ -186,7 +194,7 @@ class _ExcursionMainState extends State { height: 10, ), VarTextField( - textController: getFieldsController()["BimaNr"]!, + textController: rmap["BimaNr"]!["controller"]!, localization: AppLocalizations.of(context)!.bimaNr, dbName: "BimaNr", required: false, @@ -197,7 +205,7 @@ class _ExcursionMainState extends State { ), // ---------- Bima name VarTextField( - textController: getFieldsController()["BimaName"]!, + textController: rmap["BimaName"]!["controller"]!, localization: AppLocalizations.of(context)!.bimaName, dbName: "BimaName", required: false, @@ -209,7 +217,7 @@ class _ExcursionMainState extends State { // ---------- Bima user BimaNutzer(onBimaNutzerChanged: (value) { setState(() { - getFieldsController()["BimaNutzer"]!.text = value; + rmap["BimaNutzer"]!["controller"]!.text = value; }); }), const SizedBox( @@ -217,7 +225,7 @@ class _ExcursionMainState extends State { ), // ---------- Bima AGV VarTextField( - textController: getFieldsController()["BimaAGV"]!, + textController: rmap["BimaAGV"]!["controller"]!, localization: AppLocalizations.of(context)!.bimaAGV, dbName: "BimaAGV", required: false, @@ -231,7 +239,7 @@ class _ExcursionMainState extends State { children: [ // ---------- Weather VarTextField( - textController: getFieldsController()["Wetter"]!, + textController: rmap["Wetter"]!["controller"]!, localization: AppLocalizations.of(context)!.wetter, dbName: "Wetter", required: false, @@ -240,7 +248,7 @@ class _ExcursionMainState extends State { const SizedBox(height: 10), // ---------- Temperature VarTextField( - textController: getFieldsController()["Temperat"]!, + textController: rmap["Temperat"]!["controller"]!, localization: AppLocalizations.of(context)!.temperatur, dbName: "Temperat", required: false, @@ -248,16 +256,16 @@ class _ExcursionMainState extends State { ), const SizedBox(height: 10), // ---------- Last precipitation - LetzterNiederschlag(controller: getFieldsController()["RegenVor"]!), + LetzterNiederschlag(controller: rmap["RegenVor"]!["controller"]!), const SizedBox(height: 20), // ---------- Track conditions StreckeUSpurbedingungen( - kmAutoController: getFieldsController()["KmAuto"]!, - kmFussController: getFieldsController()["KmFuss"]!, - kmRadController: getFieldsController()["KmRad"]!, - spGutController: getFieldsController()["SpGut"]!, - spMittelController: getFieldsController()["SpMittel"]!, - spSchlechtController: getFieldsController()["SpSchlecht"]!, + kmAutoController: rmap["KmAuto"]!["controller"]!, + kmFussController: rmap["KmFuss"]!["controller"]!, + kmRadController: rmap["KmRad"]!["controller"]!, + spGutController: rmap["SpGut"]!["controller"]!, + spMittelController: rmap["SpMittel"]!["controller"]!, + spSchlechtController: rmap["SpSchlecht"]!["controller"]!, ), const SizedBox( height: 20, @@ -265,27 +273,27 @@ class _ExcursionMainState extends State { const Divider(), // ---------- Track found SpurGefunden( - spurFund: getFieldsController()["SpurFund"]!, - spurLang: getFieldsController()["SpurLang"]!, - spurTiere: getFieldsController()["SpurTiere"]!, - spSicher: getFieldsController()["SpSicher"]!, - welpenSp: getFieldsController()["WelpenSp"]!, - welpenAnz: getFieldsController()["WelpenAnz"]!, - wpSicher: getFieldsController()["WpSicher"]!), + spurFund: rmap["SpurFund"]!["controller"]!, + spurLang: rmap["SpurLang"]!["controller"]!, + spurTiere: rmap["SpurTiere"]!["controller"]!, + spSicher: rmap["SpSicher"]!["controller"]!, + welpenSp: rmap["WelpenSp"]!["controller"]!, + welpenAnz: rmap["WelpenAnz"]!["controller"]!, + wpSicher: rmap["WpSicher"]!["controller"]!), const SizedBox( height: 20, ), // ---------- Counts Anzahlen( - losungAnz: getFieldsController()["LosungAnz"]!, - losungGes: getFieldsController()["LosungGes"]!, - losungGen: getFieldsController()["LosungGen"]!, - urinAnz: getFieldsController()["UrinAnz"]!, - urinGen: getFieldsController()["UrinGen"]!, - oestrAnz: getFieldsController()["OestrAnz"]!, - oestrGen: getFieldsController()["OestrGen"]!, - haarAnz: getFieldsController()["HaarAnz"]!, - haarGen: getFieldsController()["HaarGen"]!, + losungAnz: rmap["LosungAnz"]!["controller"]!, + losungGes: rmap["LosungGes"]!["controller"]!, + losungGen: rmap["LosungGen"]!["controller"]!, + urinAnz: rmap["UrinAnz"]!["controller"]!, + urinGen: rmap["UrinGen"]!["controller"]!, + oestrAnz: rmap["OestrAnz"]!["controller"]!, + oestrGen: rmap["OestrGen"]!["controller"]!, + haarAnz: rmap["HaarAnz"]!["controller"]!, + haarGen: rmap["HaarGen"]!["controller"]!, ), const SizedBox( height: 20, @@ -304,7 +312,7 @@ class _ExcursionMainState extends State { ), ), Hinweise( - hinweise: getFieldsController()["Hinweise"]!, + hinweise: rmap["Hinweise"]!["controller"]!, ), ], ), @@ -315,7 +323,7 @@ class _ExcursionMainState extends State { children: [ // ---------- Remarks VarTextField( - textController: getFieldsController()["Bemerk"]!, + textController: rmap["Bemerk"]!["controller"]!, localization: AppLocalizations.of(context)!.sonstbemerkungen, dbName: "Bemerk", required: false, @@ -326,7 +334,7 @@ class _ExcursionMainState extends State { ), // ---------- Internal communication VarTextField( - textController: getFieldsController()["IntKomm"]!, + textController: rmap["IntKomm"]!["controller"]!, localization: AppLocalizations.of(context)!.intkomm, dbName: "IntKomm", required: false, @@ -362,13 +370,20 @@ class _ExcursionMainState extends State { currentStep = value; }); }, - onStepContinue: () { + onStepContinue: () async { final isLastStep = currentStep == getSteps().length - 1; if (!isLastStep) { setState(() { currentStep += 1; }); + } else { + bool empty = CheckRequired.checkRequired(rmap); + if (empty) { + await DialogHelper.showTemplateDialog(context, getFieldsText(), false); + } else { + await DialogHelper.showSaveOptionsDialog(context, getFieldsText(), false); + } } }, onStepCancel: () {