fixed template bugs

This commit is contained in:
Nico
2024-03-23 15:11:23 +01:00
parent a7d832818f
commit 97f7e0796c
6 changed files with 125 additions and 124 deletions

View File

@@ -1,6 +1,5 @@
todo:
maybe auch vorschläge aus templates in dropdown menüs anzeigen
abbaudat leer
beim nächsten schritt als template
im englischen abändern
standort automatisch in Karte
@@ -28,6 +27,7 @@ eintrg in db wenn http response (in sent column)
not to do:
abbaudat leer
clean db_helper
In der Karte den save button erst zeigen nachdem marker gesetzt wurde
json string in csv und exportieren in text datei

View File

@@ -30,9 +30,9 @@ class _AddCamMainState extends State<AddCamMain> {
TextEditingController id = TextEditingController();
TextEditingController rudelC = TextEditingController();
TextEditingController addresse1C = TextEditingController();
TextEditingController addresse2C = TextEditingController();
TextEditingController addresse3C = TextEditingController();
TextEditingController adresse1C = TextEditingController();
TextEditingController adresse2C = TextEditingController();
TextEditingController adresse3C = TextEditingController();
TextEditingController bLandC = TextEditingController();
TextEditingController lkrC = TextEditingController();
TextEditingController beiOrtC = TextEditingController();
@@ -40,12 +40,12 @@ class _AddCamMainState extends State<AddCamMain> {
TextEditingController ffTypC = TextEditingController();
TextEditingController kSchloNrC = TextEditingController();
TextEditingController auftragC = TextEditingController();
TextEditingController absprachenC = TextEditingController();
TextEditingController sonstBemerkungenC = TextEditingController();
TextEditingController kontAbspC = TextEditingController();
TextEditingController sonstBemC = TextEditingController();
TextEditingController fKontakt1C = TextEditingController();
TextEditingController fKontakt2C = TextEditingController();
TextEditingController fKontakt3C = TextEditingController();
TextEditingController altStOrtC = TextEditingController();
TextEditingController standortC = TextEditingController();
TextEditingController kTage1C = TextEditingController();
TextEditingController kTage2C = TextEditingController();
TextEditingController intKommC = TextEditingController();
@@ -88,9 +88,9 @@ class _AddCamMainState extends State<AddCamMain> {
'CID': id.text,
'Rudel': rudelC.text,
'Datum': datumS,
'Adresse1': addresse1C.text,
'Adresse2': addresse2C.text,
'Adresse3': addresse3C.text,
'Adresse1': adresse1C.text,
'Adresse2': adresse2C.text,
'Adresse3': adresse3C.text,
'BLand': bLandC.text,
'Lkr': lkrC.text,
'BeiOrt': beiOrtC.text,
@@ -106,12 +106,12 @@ class _AddCamMainState extends State<AddCamMain> {
'KontDat': kontDatS,
'AbbauDat': abbauDatS,
'Auftrag': auftragC.text,
'KontAbsp': absprachenC.text,
'SonstBem': sonstBemerkungenC.text,
'KontAbsp': kontAbspC.text,
'SonstBem': sonstBemC.text,
'FKontakt1': fKontakt1C.text,
'FKontakt2': fKontakt2C.text,
'FKontakt3': fKontakt3C.text,
'Standort': altStOrtC.text,
'Standort': standortC.text,
'AusVon': ausVonS,
'AusBis': ausBisS,
'KTage1': kTage1C.text,
@@ -180,9 +180,9 @@ class _AddCamMainState extends State<AddCamMain> {
if (widget.isTemplate && widget.templateData != null) {
id.text = widget.templateData!['CID'];
rudelC.text = widget.templateData!['Rudel'];
addresse1C.text = widget.templateData!['Addresse1'];
addresse2C.text = widget.templateData!['Addresse2'];
addresse3C.text = widget.templateData!['Addresse3'];
adresse1C.text = widget.templateData!['Adresse1'];
adresse2C.text = widget.templateData!['Adresse2'];
adresse3C.text = widget.templateData!['Adresse3'];
bLandC.text = widget.templateData!['BLand'];
lkrC.text = widget.templateData!['Lkr'];
beiOrtC.text = widget.templateData!['BeiOrt'];
@@ -199,12 +199,12 @@ class _AddCamMainState extends State<AddCamMain> {
kontDatS = widget.templateData!['KontDat'];
abbauDatS = widget.templateData!['AbbauDat'];
auftragC.text = widget.templateData!['Auftrag'];
absprachenC.text = widget.templateData!['Absprachen'];
sonstBemerkungenC.text = widget.templateData!['SonstBemerkungen'];
kontAbspC.text = widget.templateData!['KontAbsp'];
sonstBemC.text = widget.templateData!['SonstBem'];
fKontakt1C.text = widget.templateData!['FKontakt1'];
fKontakt2C.text = widget.templateData!['FKontakt2'];
fKontakt3C.text = widget.templateData!['FKontakt3'];
altStOrtC.text = widget.templateData!['AltStOrt'];
standortC.text = widget.templateData!['Standort'];
ausVonS = widget.templateData!['AusVon'];
ausBisS = widget.templateData!['AusBis'];
kTage1C.text = widget.templateData!['KTage1'].toString();
@@ -330,7 +330,7 @@ class _AddCamMainState extends State<AddCamMain> {
Map<String, TextEditingController> fields = {
'CID': id,
'Rudel': rudelC,
'Addresse1': addresse1C,
'Adresse1': adresse1C,
'BLand': bLandC,
'Lkr': lkrC,
'BeiOrt': beiOrtC,
@@ -342,7 +342,7 @@ class _AddCamMainState extends State<AddCamMain> {
'Platzung': TextEditingController(text: selectedPlatzung),
'KTage1': kTage1C,
'KTage2': kTage2C,
'Standort': altStOrtC,
'Standort': standortC,
};
for (var entry in fields.entries) {
@@ -393,7 +393,7 @@ class _AddCamMainState extends State<AddCamMain> {
children: [
Align(
alignment: Alignment.bottomLeft,
child: AltStOrt(altStOrtC: altStOrtC),
child: Standort(standortC: standortC),
),
const SizedBox(
height: 1,
@@ -509,7 +509,7 @@ class _AddCamMainState extends State<AddCamMain> {
final result = await Navigator.of(context)
.push<LatLng>(
MaterialPageRoute(builder: (context) {
return Standort(
return Karte(
currentPosition: currentPosition,
onPositionChange: (updatedPosition) {
setState(() {
@@ -632,12 +632,12 @@ class _AddCamMainState extends State<AddCamMain> {
),
Align(
alignment: Alignment.bottomLeft,
child: Absprachen(absprachenC: absprachenC),
child: KontAbsp(kontAbspC: kontAbspC),
),
Align(
alignment: Alignment.bottomLeft,
child:
SonstBemerkungen(sonstBemerkungenC: sonstBemerkungenC),
SonstBem(sonstBemC: sonstBemC),
),
],
)),
@@ -650,14 +650,14 @@ class _AddCamMainState extends State<AddCamMain> {
),
Align(
alignment: Alignment.bottomLeft,
child: Addresse1(addresse1C: addresse1C)),
child: Adresse1(adresse1C: adresse1C)),
Align(
alignment: Alignment.bottomLeft,
child: Addresse2(addresse2C: addresse2C),
child: Adresse2(adresse2C: adresse2C),
),
Align(
alignment: Alignment.bottomLeft,
child: Addresse3(addresse3C: addresse3C),
child: Adresse3(adresse3C: adresse3C),
),
const SizedBox(
height: 15,
@@ -712,7 +712,8 @@ class _AddCamMainState extends State<AddCamMain> {
final isLastStep = currentStep == getSteps().length - 1;
if (!isLastStep) {
// ! saveTemplate();
saveTemplate();
setState(() {
currentStep += 1;
});

View File

@@ -213,23 +213,23 @@ class _RudelState extends State<Rudel> {
//
//
//
// Standort
// Karte
// ! completely new page
class Standort extends StatefulWidget {
class Karte extends StatefulWidget {
final Position currentPosition;
final Function(Position) onPositionChange;
const Standort(
const Karte(
{super.key,
required this.currentPosition,
required this.onPositionChange});
@override
StandortState createState() => StandortState();
KarteState createState() => KarteState();
}
class StandortState extends State<Standort> {
class KarteState extends State<Karte> {
List<Marker> markers = [];
LatLng? selectedPosition;
Position? updatedPosition;
@@ -387,20 +387,20 @@ class _DatumState extends State<Datum> {
}
}
// Addresse1
// Adresse1
class Addresse1 extends StatefulWidget {
final TextEditingController addresse1C;
class Adresse1 extends StatefulWidget {
final TextEditingController adresse1C;
const Addresse1({super.key, required this.addresse1C});
const Adresse1({super.key, required this.adresse1C});
@override
State<Addresse1> createState() => _Addresse1State();
State<Adresse1> createState() => _Adresse1State();
}
class _Addresse1State extends State<Addresse1> {
class _Adresse1State extends State<Adresse1> {
String? selectedRudel;
late Future<List<Map<String, dynamic>>> Addresse1;
late Future<List<Map<String, dynamic>>> Adresse1;
@override
void initState() {
@@ -408,15 +408,15 @@ class _Addresse1State extends State<Addresse1> {
_loadPref();
Addresse1 = DBHelper().getPlace();
Adresse1 = DBHelper().getPlace();
}
void _loadPref() {
Future.delayed(Duration.zero, () async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String addresse1 = prefs.getString('addresse1') ?? "";
String adresse1 = prefs.getString('adresse1') ?? "";
setState(() {
widget.addresse1C.text = addresse1;
widget.adresse1C.text = adresse1;
});
});
}
@@ -430,20 +430,20 @@ class _Addresse1State extends State<Addresse1> {
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.adresse1,
enabledBorder: widget.addresse1C.text.isEmpty
enabledBorder: widget.adresse1C.text.isEmpty
? const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.red))
: const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.green)),
focusedBorder: widget.addresse1C.text.isEmpty
focusedBorder: widget.adresse1C.text.isEmpty
? const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.red))
: const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.green)),
),
controller: widget.addresse1C,
controller: widget.adresse1C,
onChanged: (value) => setState(() {
widget.addresse1C.text = value;
widget.adresse1C.text = value;
}),
)),
Expanded(
@@ -451,20 +451,20 @@ class _Addresse1State extends State<Addresse1> {
child: Align(
alignment: Alignment.bottomLeft,
child: FutureBuilder<List<Map<String, dynamic>>>(
future: Addresse1,
future: Adresse1,
builder: (BuildContext context,
AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.hasData) {
return DropdownButton<String>(
items: snapshot.data!
.map((item) =>
buildMenuItem(item['Addresse1'].toString()))
buildMenuItem(item['Adresse1'].toString()))
.toList(),
onChanged: (value) {
setState(
() {
selectedRudel = value;
widget.addresse1C.text = value ?? '';
widget.adresse1C.text = value ?? '';
},
);
},
@@ -490,25 +490,25 @@ class _Addresse1State extends State<Addresse1> {
);
}
// Addresse2
// Adresse2
class Addresse2 extends StatefulWidget {
final TextEditingController addresse2C;
class Adresse2 extends StatefulWidget {
final TextEditingController adresse2C;
const Addresse2({super.key, required this.addresse2C});
const Adresse2({super.key, required this.adresse2C});
@override
State<Addresse2> createState() => _Addresse2State();
State<Adresse2> createState() => _Adresse2State();
}
class _Addresse2State extends State<Addresse2> {
class _Adresse2State extends State<Adresse2> {
String? selectedRudel;
late Future<List<Map<String, dynamic>>> Addresse2;
late Future<List<Map<String, dynamic>>> Adresse2;
@override
void initState() {
super.initState();
Addresse2 = DBHelper().getPlace();
Adresse2 = DBHelper().getPlace();
}
@override
@@ -520,9 +520,9 @@ class _Addresse2State extends State<Addresse2> {
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.adresse2),
controller: widget.addresse2C,
controller: widget.adresse2C,
onChanged: (value) => setState(() {
widget.addresse2C.text = value;
widget.adresse2C.text = value;
}),
)),
Expanded(
@@ -530,19 +530,19 @@ class _Addresse2State extends State<Addresse2> {
child: Align(
alignment: Alignment.bottomLeft,
child: FutureBuilder<List<Map<String, dynamic>>>(
future: Addresse2,
future: Adresse2,
builder: (BuildContext context,
AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.hasData) {
return DropdownButton<String>(
items: snapshot.data!
.map((item) => buildMenuItem(item['Addresse2'].toString()))
.map((item) => buildMenuItem(item['Adresse2'].toString()))
.toList(),
onChanged: (value) {
setState(
() {
selectedRudel = value;
widget.addresse2C.text = value ?? '';
widget.adresse2C.text = value ?? '';
},
);
},
@@ -568,25 +568,25 @@ class _Addresse2State extends State<Addresse2> {
);
}
// Addresse3
// Adresse3
class Addresse3 extends StatefulWidget {
final TextEditingController addresse3C;
class Adresse3 extends StatefulWidget {
final TextEditingController adresse3C;
const Addresse3({super.key, required this.addresse3C});
const Adresse3({super.key, required this.adresse3C});
@override
State<Addresse3> createState() => _Addresse3State();
State<Adresse3> createState() => _Adresse3State();
}
class _Addresse3State extends State<Addresse3> {
class _Adresse3State extends State<Adresse3> {
String? selectedRudel;
late Future<List<Map<String, dynamic>>> Addresse3;
late Future<List<Map<String, dynamic>>> Adresse3;
@override
void initState() {
super.initState();
Addresse3 = DBHelper().getPlace();
Adresse3 = DBHelper().getPlace();
}
@override
@@ -598,27 +598,27 @@ class _Addresse3State extends State<Addresse3> {
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.adresse3),
controller: widget.addresse3C,
controller: widget.adresse3C,
)),
Expanded(
flex: 1,
child: Align(
alignment: Alignment.bottomLeft,
child: FutureBuilder<List<Map<String, dynamic>>>(
future: Addresse3,
future: Adresse3,
builder: (BuildContext context,
AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.hasData) {
return DropdownButton<String>(
items: snapshot.data!
.map((item) =>
buildMenuItem(item['Addresse3'].toString()))
buildMenuItem(item['Adresse3'].toString()))
.toList(),
onChanged: (value) {
setState(
() {
selectedRudel = value;
widget.addresse3C.text = value ?? '';
widget.adresse3C.text = value ?? '';
},
);
},
@@ -1795,25 +1795,25 @@ class _AuftragState extends State<Auftrag> {
);
}
// Absprachen
// KontAbsp
class Absprachen extends StatefulWidget {
final TextEditingController absprachenC;
class KontAbsp extends StatefulWidget {
final TextEditingController kontAbspC;
const Absprachen({super.key, required this.absprachenC});
const KontAbsp({super.key, required this.kontAbspC});
@override
State<Absprachen> createState() => _AbsprachenState();
State<KontAbsp> createState() => _KontAbspState();
}
class _AbsprachenState extends State<Absprachen> {
class _KontAbspState extends State<KontAbsp> {
String? selectedRudel;
late Future<List<Map<String, dynamic>>> Absprachen;
late Future<List<Map<String, dynamic>>> KontAbsp;
@override
void initState() {
super.initState();
Absprachen = DBHelper().getPlace();
KontAbsp = DBHelper().getPlace();
}
@override
@@ -1824,28 +1824,28 @@ class _AbsprachenState extends State<Absprachen> {
flex: 2,
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.absprachen),
controller: widget.absprachenC,
hintText: AppLocalizations.of(context)!.kontabsp),
controller: widget.kontAbspC,
)),
Expanded(
flex: 1,
child: Align(
alignment: Alignment.bottomLeft,
child: FutureBuilder<List<Map<String, dynamic>>>(
future: Absprachen,
future: KontAbsp,
builder: (BuildContext context,
AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.hasData) {
return DropdownButton<String>(
items: snapshot.data!
.map((item) =>
buildMenuItem(item['Absprachen'].toString()))
buildMenuItem(item['KontAbsp'].toString()))
.toList(),
onChanged: (value) {
setState(
() {
selectedRudel = value;
widget.absprachenC.text = value ?? '';
widget.kontAbspC.text = value ?? '';
},
);
},
@@ -1871,25 +1871,25 @@ class _AbsprachenState extends State<Absprachen> {
);
}
// SonstBemerkungen
// SonstBem
class SonstBemerkungen extends StatefulWidget {
final TextEditingController sonstBemerkungenC;
class SonstBem extends StatefulWidget {
final TextEditingController sonstBemC;
const SonstBemerkungen({super.key, required this.sonstBemerkungenC});
const SonstBem({super.key, required this.sonstBemC});
@override
State<SonstBemerkungen> createState() => _SonstBemerkungenState();
State<SonstBem> createState() => _SonstBemState();
}
class _SonstBemerkungenState extends State<SonstBemerkungen> {
class _SonstBemState extends State<SonstBem> {
String? selectedRudel;
late Future<List<Map<String, dynamic>>> SonstBemerkungen;
late Future<List<Map<String, dynamic>>> SonstBem;
@override
void initState() {
super.initState();
SonstBemerkungen = DBHelper().getPlace();
SonstBem = DBHelper().getPlace();
}
@override
@@ -1901,27 +1901,27 @@ class _SonstBemerkungenState extends State<SonstBemerkungen> {
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.sonstbemerkungen),
controller: widget.sonstBemerkungenC,
controller: widget.sonstBemC,
)),
Expanded(
flex: 1,
child: Align(
alignment: Alignment.bottomLeft,
child: FutureBuilder<List<Map<String, dynamic>>>(
future: SonstBemerkungen,
future: SonstBem,
builder: (BuildContext context,
AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.hasData) {
return DropdownButton<String>(
items: snapshot.data!
.map((item) =>
buildMenuItem(item['SonstBemerkungen'].toString()))
buildMenuItem(item['SonstBem'].toString()))
.toList(),
onChanged: (value) {
setState(
() {
selectedRudel = value;
widget.sonstBemerkungenC.text = value ?? '';
widget.sonstBemC.text = value ?? '';
},
);
},
@@ -2175,25 +2175,25 @@ class _FKontakt3State extends State<FKontakt3> {
);
}
// AltStOrt
// Standort
class AltStOrt extends StatefulWidget {
final TextEditingController altStOrtC;
class Standort extends StatefulWidget {
final TextEditingController standortC;
const AltStOrt({super.key, required this.altStOrtC});
const Standort({super.key, required this.standortC});
@override
State<AltStOrt> createState() => _AltStOrtState();
State<Standort> createState() => _StandortState();
}
class _AltStOrtState extends State<AltStOrt> {
class _StandortState extends State<Standort> {
String? selectedRudel;
late Future<List<Map<String, dynamic>>> AltStOrt;
late Future<List<Map<String, dynamic>>> Standort;
@override
void initState() {
super.initState();
AltStOrt = DBHelper().getPlace();
Standort = DBHelper().getPlace();
}
@override
@@ -2205,38 +2205,38 @@ class _AltStOrtState extends State<AltStOrt> {
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.altstort,
enabledBorder: widget.altStOrtC.text.isEmpty
enabledBorder: widget.standortC.text.isEmpty
? const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.red))
: const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.green)),
focusedBorder: widget.altStOrtC.text.isEmpty
focusedBorder: widget.standortC.text.isEmpty
? const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.red))
: const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.green)),
),
controller: widget.altStOrtC,
controller: widget.standortC,
)),
Expanded(
flex: 1,
child: Align(
alignment: Alignment.bottomLeft,
child: FutureBuilder<List<Map<String, dynamic>>>(
future: AltStOrt,
future: Standort,
builder: (BuildContext context,
AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.hasData) {
return DropdownButton<String>(
items: snapshot.data!
.map((item) =>
buildMenuItem(item['AltStOrt'].toString()))
buildMenuItem(item['Standort'].toString()))
.toList(),
onChanged: (value) {
setState(
() {
selectedRudel = value;
widget.altStOrtC.text = value ?? '';
widget.standortC.text = value ?? '';
},
);
},

View File

@@ -43,7 +43,7 @@
"platzung": "Platzierung",
"zeiteinstellung": "Zeiteinstellung",
"auftrag": "Auftrag",
"absprachen": "Absprachen",
"kontabsp": "Absprachen",
"sonstbemerkungen": "Sonstige Bemerkungen",
"fkontakt1": "Kontakt für Fläche",
"fkontakt2": "Kontakt Eigentümer",

View File

@@ -212,9 +212,9 @@
"description": "Auftrag textfield"
},
"absprachen": "Agreements",
"@absprachen": {
"description": "absprachen textfield"
"kontabsp": "Agreements",
"@kontabsp": {
"description": "kontabsp textfield"
},
"sonstbemerkungen": "Other remarks",

View File

@@ -205,7 +205,7 @@ class _ViewCamsState extends State<ViewCams> {
Text(
'${AppLocalizations.of(context)!.locations}: ${place['Standort']}'),
Text(
'${AppLocalizations.of(context)!.adresse3}: ${place['PLZOrt']}'),
'${AppLocalizations.of(context)!.adresse3}: ${place['Adresse3']}'),
Text(
'${AppLocalizations.of(context)!.bland}: ${place['BLand']}'),
Text(
@@ -217,15 +217,15 @@ class _ViewCamsState extends State<ViewCams> {
Text(
'${AppLocalizations.of(context)!.altstort}: ${place['AltStOrt']}'),
Text(
'${AppLocalizations.of(context)!.adresse1}: ${place['NameVorname']}'),
'${AppLocalizations.of(context)!.adresse1}: ${place['Adresse1']}'),
Text(
'${AppLocalizations.of(context)!.adresse2}: ${place['EmailTel']}'),
'${AppLocalizations.of(context)!.adresse2}: ${place['Adresse2']}'),
Text(
'${AppLocalizations.of(context)!.auftrag}: ${place['Auftrag']}'),
Text(
'${AppLocalizations.of(context)!.absprachen}: ${place['absprachen']}'),
'${AppLocalizations.of(context)!.kontabsp}: ${place['KontAbsp']}'),
Text(
'${AppLocalizations.of(context)!.sonstbemerkungen}: ${place['SonstBemerkungen']}'),
'${AppLocalizations.of(context)!.sonstbemerkungen}: ${place['SonstBem']}'),
Text(
'${AppLocalizations.of(context)!.fkontakt1}: ${place['FKontakt1']}'),
Text(