sitzung luc

This commit is contained in:
nico
2024-03-21 21:22:29 +01:00
parent bfabdee84b
commit d1ce04d2d0
11 changed files with 444 additions and 579 deletions

View File

@@ -10,8 +10,8 @@ import 'package:geolocator/geolocator.dart';
import 'package:intl/intl.dart';
import 'package:latlong2/latlong.dart';
import 'package:animations/animations.dart';
import 'package:http/http.dart' as http;
import 'package:dio/dio.dart';
import 'package:shared_preferences/shared_preferences.dart';
class AddCamMain extends StatefulWidget {
final bool isTemplate;
@@ -30,9 +30,9 @@ class _AddCamMainState extends State<AddCamMain> {
TextEditingController id = TextEditingController();
TextEditingController rudelC = TextEditingController();
TextEditingController nameVornameC = TextEditingController();
TextEditingController plzOrtC = TextEditingController();
TextEditingController emailTelC = TextEditingController();
TextEditingController addresse1C = TextEditingController();
TextEditingController addresse2C = TextEditingController();
TextEditingController addresse3C = TextEditingController();
TextEditingController bLandC = TextEditingController();
TextEditingController lkrC = TextEditingController();
TextEditingController beiOrtC = TextEditingController();
@@ -49,14 +49,14 @@ class _AddCamMainState extends State<AddCamMain> {
TextEditingController kTage1C = TextEditingController();
TextEditingController kTage2C = TextEditingController();
TextEditingController intKommC = TextEditingController();
TextEditingController kontSumC = TextEditingController();
TextEditingController betreuungC = TextEditingController();
String selectedStatus = 'aktiv';
String selectedSTTyp = 'opportunistisch';
String selectedFotoFilm = 'foto';
String selectedMEZ = 'sommerzeit';
String selectedPlatzung = 'kirrung';
String selectedBearsafe = 'nein';
String selectedFotoFilm = 'Foto';
String selectedMEZ = 'Sommerzeit';
String selectedPlatzung = 'Kirrung';
String selectedBearsafe = 'Nein';
Position currentPosition = Position(
longitude: 10.0,
@@ -83,6 +83,49 @@ class _AddCamMainState extends State<AddCamMain> {
DateTime kontDat = DateTime.now();
DateTime protoAm = DateTime.now();
Map<String, dynamic> getPlace() {
Map<String, dynamic> place = {
'CID': id.text,
'Rudel': rudelC.text,
'Datum': datumS,
'Adresse1': addresse1C.text,
'Adresse2': addresse2C.text,
'Adresse3': addresse3C.text,
'BLand': bLandC.text,
'Lkr': lkrC.text,
'BeiOrt': beiOrtC.text,
'OrtInfo': ortInfoC.text,
'Status': selectedStatus,
'STTyp': selectedSTTyp,
'FFTyp': ffTypC.text,
'FotoFilm': selectedFotoFilm,
'MEZ': selectedMEZ,
'Platzung': selectedPlatzung,
'KSchloNr': kSchloNrC.text,
'Bearsafe': selectedBearsafe,
'KontDat': kontDatS,
'AbbauDat': abbauDatS,
'Auftrag': auftragC.text,
'KontAbsp': absprachenC.text,
'SonstBem': sonstBemerkungenC.text,
'FKontakt1': fKontakt1C.text,
'FKontakt2': fKontakt2C.text,
'FKontakt3': fKontakt3C.text,
'Standort': altStOrtC.text,
'AusVon': ausVonS,
'AusBis': ausBisS,
'KTage1': kTage1C.text,
'KTage2': kTage2C.text,
'ProtoAm': protoAmS,
'IntKomm': intKommC.text,
'Betreuung': betreuungC.text,
'DECLNG': currentPosition.longitude,
'DECLAT': currentPosition.latitude,
};
return place;
}
bool empty = false;
// determine live position with checks for denied permission and turned off location service
@@ -137,9 +180,9 @@ class _AddCamMainState extends State<AddCamMain> {
if (widget.isTemplate && widget.templateData != null) {
id.text = widget.templateData!['CID'];
rudelC.text = widget.templateData!['Rudel'];
nameVornameC.text = widget.templateData!['NameVorname'];
plzOrtC.text = widget.templateData!['PLZOrt'];
emailTelC.text = widget.templateData!['EmailTel'];
addresse1C.text = widget.templateData!['Addresse1'];
addresse2C.text = widget.templateData!['Addresse2'];
addresse3C.text = widget.templateData!['Addresse3'];
bLandC.text = widget.templateData!['BLand'];
lkrC.text = widget.templateData!['Lkr'];
beiOrtC.text = widget.templateData!['BeiOrt'];
@@ -168,7 +211,7 @@ class _AddCamMainState extends State<AddCamMain> {
kTage2C.text = widget.templateData!['KTage2'].toString();
protoAmS = widget.templateData!['ProtoAm'];
intKommC.text = widget.templateData!['IntKomm'];
kontSumC.text = widget.templateData!['KontSum'];
betreuungC.text = widget.templateData!['Betreuung'];
}
}
@@ -228,42 +271,7 @@ class _AddCamMainState extends State<AddCamMain> {
}
void _httpRequest() async {
Map<String, dynamic> place = {
'CID': id.text,
'Rudel': rudelC.text,
'Datum': datumS,
'NameVorname': nameVornameC.text,
'PLZOrt': plzOrtC.text,
'EmailTel': emailTelC.text,
'BLand': bLandC.text,
'Lkr': lkrC.text,
'BeiOrt': beiOrtC.text,
'OrtInfo': ortInfoC.text,
'Status': selectedStatus,
'STTyp': selectedSTTyp,
'FFTyp': ffTypC.text,
'FotoFilm': selectedFotoFilm,
'MEZ': selectedMEZ,
'Platzung': selectedPlatzung,
'KSchloNr': kSchloNrC.text,
'Bearsafe': selectedBearsafe,
'KontDat': kontDatS,
'AbbauDat': abbauDatS,
'Auftrag': auftragC.text,
'Absprachen': absprachenC.text,
'SonstBemerkungen': sonstBemerkungenC.text,
'FKontakt1': fKontakt1C.text,
'FKontakt2': fKontakt2C.text,
'FKontakt3': fKontakt3C.text,
'AltStOrt': altStOrtC.text,
'AusVon': ausVonS,
'AusBis': ausBisS,
'KTage1': kTage1C.text,
'KTage2': kTage2C.text,
'ProtoAm': protoAmS,
'IntKomm': intKommC.text,
'KontSum': kontSumC.text,
};
Map<String, dynamic> place = getPlace();
/* final response = await http.post(
Uri.parse('http://192.168.1.106/www.dbb-wolf.de/data/_app24.php'),
@@ -276,13 +284,14 @@ class _AddCamMainState extends State<AddCamMain> {
print(jsonEncode(place));
final dio = Dio();
final SharedPreferences prefs = await SharedPreferences.getInstance();
dio.options.responseType = ResponseType.plain;
Response response =
Response(requestOptions: RequestOptions(path: ''), statusCode: 400);
try {
response = await dio.post(
'http://192.168.1.106/www.dbb-wolf.de/data/_app24.php',
response = await dio.post(prefs.getString('apiAddress') ?? "",
data: jsonEncode(place));
} on DioException catch (e) {
if (e.response?.statusCode == 500) {
@@ -302,42 +311,8 @@ class _AddCamMainState extends State<AddCamMain> {
Future<void> saveFile() async {
String? selectedDirectory = await FilePicker.platform.getDirectoryPath();
Map<String, dynamic> place = {
'CID': id.text,
'Rudel': rudelC.text,
'Datum': datumS,
'NameVorname': nameVornameC.text,
'PLZOrt': plzOrtC.text,
'EmailTel': emailTelC.text,
'BLand': bLandC.text,
'Lkr': lkrC.text,
'BeiOrt': beiOrtC.text,
'OrtInfo': ortInfoC.text,
'Status': selectedStatus,
'STTyp': selectedSTTyp,
'FFTyp': ffTypC.text,
'FotoFilm': selectedFotoFilm,
'MEZ': selectedMEZ,
'Platzung': selectedPlatzung,
'KSchloNr': kSchloNrC.text,
'Bearsafe': selectedBearsafe,
'KontDat': kontDatS,
'AbbauDat': abbauDatS,
'Auftrag': auftragC.text,
'Absprachen': absprachenC.text,
'SonstBemerkungen': sonstBemerkungenC.text,
'FKontakt1': fKontakt1C.text,
'FKontakt2': fKontakt2C.text,
'FKontakt3': fKontakt3C.text,
'AltStOrt': altStOrtC.text,
'AusVon': ausVonS,
'AusBis': ausBisS,
'KTage1': kTage1C.text,
'KTage2': kTage2C.text,
'ProtoAm': protoAmS,
'IntKomm': intKommC.text,
'KontSum': kontSumC.text,
};
Map place = getPlace();
String jsonPlace = jsonEncode(place);
if (selectedDirectory == null) {
@@ -358,7 +333,7 @@ class _AddCamMainState extends State<AddCamMain> {
Map<String, TextEditingController> fields = {
'CID': id,
'Rudel': rudelC,
'NameVorname': nameVornameC,
'Addresse1': addresse1C,
'BLand': bLandC,
'Lkr': lkrC,
'BeiOrt': beiOrtC,
@@ -370,6 +345,7 @@ class _AddCamMainState extends State<AddCamMain> {
'Platzung': TextEditingController(text: selectedPlatzung),
'KTage1': kTage1C,
'KTage2': kTage2C,
'Standort': altStOrtC,
};
for (var entry in fields.entries) {
@@ -388,42 +364,8 @@ class _AddCamMainState extends State<AddCamMain> {
// If the user already edits a template this template will be upadted otherwise a new one will be created
void saveTemplate() async {
var placeDB = DBHelper();
Map<String, dynamic> templates = {
'CID': id.text,
'Rudel': rudelC.text,
'Datum': datumS,
'NameVorname': nameVornameC.text,
'PLZOrt': plzOrtC.text,
'EmailTel': emailTelC.text,
'BLand': bLandC.text,
'Lkr': lkrC.text,
'BeiOrt': beiOrtC.text,
'OrtInfo': ortInfoC.text,
'Status': selectedStatus,
'STTyp': selectedSTTyp,
'FFTyp': ffTypC.text,
'FotoFilm': selectedFotoFilm,
'MEZ': selectedMEZ,
'Platzung': selectedPlatzung,
'KSchloNr': kSchloNrC.text,
'Bearsafe': selectedBearsafe,
'KontDat': kontDatS,
'AbbauDat': abbauDatS,
'Auftrag': auftragC.text,
'Absprachen': absprachenC.text,
'SonstBemerkungen': sonstBemerkungenC.text,
'FKontakt1': fKontakt1C.text,
'FKontakt2': fKontakt2C.text,
'FKontakt3': fKontakt3C.text,
'AltStOrt': altStOrtC.text,
'AusVon': ausVonS,
'AusBis': ausBisS,
'KTage1': kTage1C.text,
'KTage2': kTage2C.text,
'ProtoAm': protoAmS,
'IntKomm': intKommC.text,
'KontSum': kontSumC.text,
};
Map<String, dynamic> templates = getPlace();
if (widget.isTemplate) {
await placeDB.updateTemplate(templates);
@@ -436,42 +378,8 @@ class _AddCamMainState extends State<AddCamMain> {
// * also creates a json string to send it to the server later
void saveData() async {
var placeDB = DBHelper();
Map<String, dynamic> place = {
'CID': id.text,
'Rudel': rudelC.text,
'Datum': datumS,
'NameVorname': nameVornameC.text,
'PLZOrt': plzOrtC.text,
'EmailTel': emailTelC.text,
'BLand': bLandC.text,
'Lkr': lkrC.text,
'BeiOrt': beiOrtC.text,
'OrtInfo': ortInfoC.text,
'Status': selectedStatus,
'STTyp': selectedSTTyp,
'FFTyp': ffTypC.text,
'FotoFilm': selectedFotoFilm,
'MEZ': selectedMEZ,
'Platzung': selectedPlatzung,
'KSchloNr': kSchloNrC.text,
'Bearsafe': selectedBearsafe,
'KontDat': kontDatS,
'AbbauDat': abbauDatS,
'Auftrag': auftragC.text,
'Absprachen': absprachenC.text,
'SonstBemerkungen': sonstBemerkungenC.text,
'FKontakt1': fKontakt1C.text,
'FKontakt2': fKontakt2C.text,
'FKontakt3': fKontakt3C.text,
'AltStOrt': altStOrtC.text,
'AusVon': ausVonS,
'AusBis': ausBisS,
'KTage1': kTage1C.text,
'KTage2': kTage2C.text,
'ProtoAm': protoAmS,
'IntKomm': intKommC.text,
'KontSum': kontSumC.text,
};
Map<String, dynamic> place = getPlace();
await placeDB.addPlace(place);
}
@@ -490,32 +398,19 @@ class _AddCamMainState extends State<AddCamMain> {
alignment: Alignment.bottomLeft,
child: AltStOrt(altStOrtC: altStOrtC),
),
CamId(id: id),
Align(
alignment: Alignment.bottomLeft,
child: FFTyp(ffTypC: ffTypC),
),
Rudel(rudelC: rudelC),
const SizedBox(
height: 15,
height: 1,
),
Align(
alignment: Alignment.bottomLeft,
child: Row(
children: [
Text(AppLocalizations.of(context)!.bearsafe),
],
)),
Bearsafe(
initialBearsafe: selectedBearsafe,
onBearsafeChanged: (bearsafe) {
STTyp(
initialSTTyp: selectedSTTyp,
onSTTypChanged: (sttyp) {
setState(() {
selectedBearsafe = bearsafe;
selectedSTTyp = sttyp;
});
},
),
const SizedBox(
height: 15,
height: 5,
),
Align(
alignment: Alignment.bottomLeft,
@@ -536,116 +431,18 @@ class _AddCamMainState extends State<AddCamMain> {
});
},
),
Betreuung(betreuungC: betreuungC),
const SizedBox(
height: 15,
height: 20,
),
CamId(id: id),
Align(
alignment: Alignment.bottomLeft,
child: Row(
children: [
Text(AppLocalizations.of(context)!.sttyp),
const Text(
'*',
style: TextStyle(color: Colors.red),
)
],
)),
STTyp(
initialSTTyp: selectedSTTyp,
onSTTypChanged: (sttyp) {
setState(() {
selectedSTTyp = sttyp;
});
},
alignment: Alignment.bottomLeft,
child: FFTyp(ffTypC: ffTypC),
),
const SizedBox(
height: 15,
),
Align(
alignment: Alignment.bottomLeft,
child: Row(
children: [
Text(
'${AppLocalizations.of(context)!.foto} ${AppLocalizations.of(context)!.film}'),
const Text(
'*',
style: TextStyle(color: Colors.red),
)
],
)),
FotoFilm(
initialFotoFilm: selectedFotoFilm,
onFotoFilmChanged: (fotofilm) {
setState(() {
selectedFotoFilm = fotofilm;
});
},
),
Align(
alignment: Alignment.bottomLeft,
child: KSchloNr(kSchloNrC: kSchloNrC),
),
const SizedBox(
height: 20,
),
Align(
alignment: Alignment.bottomLeft,
child: Row(
children: [
Text(AppLocalizations.of(context)!.ktage1),
const Text(
'*',
style: TextStyle(color: Colors.red),
)
],
),
),
KTage1(kTage1C: kTage1C),
const SizedBox(
height: 20,
),
Align(
alignment: Alignment.bottomLeft,
child: Row(
children: [
Text(AppLocalizations.of(context)!.ktage2),
const Text(
'*',
style: TextStyle(color: Colors.red),
)
],
)),
KTage2(kTage2C: kTage2C),
],
)),
// Date Step
Step(
title: Text(AppLocalizations.of(context)!.date),
content: Column(
children: [
Datum(
datum: datum,
),
const SizedBox(
height: 20,
),
KontDat(kontDat: kontDat),
const SizedBox(
height: 20,
),
AbbauDat(abbauDat: abbauDat),
const SizedBox(
height: 20,
),
AusVon(ausVon: ausVon),
const SizedBox(
height: 20,
),
AusBis(ausBis: ausBis),
const SizedBox(
height: 20,
),
Align(
alignment: Alignment.bottomLeft,
child: Row(
@@ -665,9 +462,38 @@ class _AddCamMainState extends State<AddCamMain> {
});
},
),
KontSum(kontSumC: kontSumC),
Align(
alignment: Alignment.bottomLeft,
child: Row(
children: [
Text(AppLocalizations.of(context)!.bearsafe),
],
)),
Bearsafe(
initialBearsafe: selectedBearsafe,
onBearsafeChanged: (bearsafe) {
setState(() {
selectedBearsafe = bearsafe;
});
},
),
const SizedBox(
height: 15,
),
Align(
alignment: Alignment.bottomLeft,
child: KSchloNr(kSchloNrC: kSchloNrC),
),
const SizedBox(
height: 5,
),
Rudel(rudelC: rudelC),
const SizedBox(
height: 15,
),
],
)),
// Second step (location)
Step(
title: Text(AppLocalizations.of(context)!.locations),
@@ -714,10 +540,6 @@ class _AddCamMainState extends State<AddCamMain> {
},
child: Text(AppLocalizations.of(context)!.openMap)),
),
Align(
alignment: Alignment.bottomLeft,
child: PLZOrt(plzOrtC: plzOrtC),
),
Align(
alignment: Alignment.bottomLeft,
child: BLand(bLandC: bLandC),
@@ -758,22 +580,54 @@ class _AddCamMainState extends State<AddCamMain> {
),
],
)),
// Date Step
Step(
title: Text(AppLocalizations.of(context)!.kontakt),
title: Text(AppLocalizations.of(context)!.date),
content: Column(
children: [
Datum(
datum: datum,
),
KontDat(kontDat: kontDat),
const SizedBox(
height: 15,
height: 20,
),
Align(
alignment: Alignment.bottomLeft,
child: Row(
children: [
Text(AppLocalizations.of(context)!.ktage1),
const Text(
'*',
style: TextStyle(color: Colors.red),
),
],
),
),
KTage1(kTage1C: kTage1C),
const SizedBox(
height: 20,
),
Align(
alignment: Alignment.bottomLeft,
child: NameVorname(nameVornameC: nameVornameC)),
Align(
alignment: Alignment.bottomLeft,
child: EmailTel(emailTelC: emailTelC),
),
child: Row(
children: [
Text(AppLocalizations.of(context)!.ktage2),
const Text(
'*',
style: TextStyle(color: Colors.red),
)
],
)),
KTage2(kTage2C: kTage2C),
const SizedBox(
height: 15,
height: 20,
),
AbbauDat(abbauDat: abbauDat),
AusVon(ausVon: ausVon),
AusBis(ausBis: ausBis),
const SizedBox(
height: 20,
),
Align(
alignment: Alignment.bottomLeft,
@@ -788,6 +642,29 @@ class _AddCamMainState extends State<AddCamMain> {
child:
SonstBemerkungen(sonstBemerkungenC: sonstBemerkungenC),
),
],
)),
Step(
title: Text(AppLocalizations.of(context)!.kontakt),
content: Column(
children: [
const SizedBox(
height: 15,
),
Align(
alignment: Alignment.bottomLeft,
child: Addresse1(addresse1C: addresse1C)),
Align(
alignment: Alignment.bottomLeft,
child: Addresse2(addresse2C: addresse2C),
),
Align(
alignment: Alignment.bottomLeft,
child: Addresse3(addresse3C: addresse3C),
),
const SizedBox(
height: 15,
),
Align(
alignment: Alignment.bottomLeft,
child: FKontakt1(fKontakt1C: fKontakt1C),
@@ -844,6 +721,8 @@ class _AddCamMainState extends State<AddCamMain> {
});
} else {
String emptyField = validateData();
// ! always fileed out
empty = false;
if (empty == true) {
showTemplateDialog(emptyField);
();

View File

@@ -1,6 +1,7 @@
// ignore_for_file: non_constant_identifier_names
import 'package:fforte/db_helper.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:geolocator/geolocator.dart';
@@ -347,20 +348,23 @@ class _DatumState extends State<Datum> {
Widget build(BuildContext context) {
return Row(
children: [
Column(children: [
Row(children: [
SizedBox(
width: 125,
child: ElevatedButton(
onPressed: () async {
final date = await pickDate();
if (date == null) return;
setState(() => datum = date);
},
child: Text(AppLocalizations.of(context)!.pickDate)),
),
const SizedBox(
width: 10,
),
Text(
'${datum?.day}. ${datum?.month}. ${datum?.year}',
),
//const SizedBox(
// height: 2,
//),
ElevatedButton(
onPressed: () async {
final date = await pickDate();
if (date == null) return;
setState(() => datum = date);
},
child: Text(AppLocalizations.of(context)!.pickDate)),
]),
],
);
@@ -383,20 +387,20 @@ class _DatumState extends State<Datum> {
}
}
// NameVorname
// Addresse1
class NameVorname extends StatefulWidget {
final TextEditingController nameVornameC;
class Addresse1 extends StatefulWidget {
final TextEditingController addresse1C;
const NameVorname({super.key, required this.nameVornameC});
const Addresse1({super.key, required this.addresse1C});
@override
State<NameVorname> createState() => _NameVornameState();
State<Addresse1> createState() => _Addresse1State();
}
class _NameVornameState extends State<NameVorname> {
class _Addresse1State extends State<Addresse1> {
String? selectedRudel;
late Future<List<Map<String, dynamic>>> NameVorname;
late Future<List<Map<String, dynamic>>> Addresse1;
@override
void initState() {
@@ -404,15 +408,15 @@ class _NameVornameState extends State<NameVorname> {
_loadPref();
NameVorname = DBHelper().getPlace();
Addresse1 = DBHelper().getPlace();
}
void _loadPref() {
Future.delayed(Duration.zero, () async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String nameVorname = prefs.getString('nameVorname') ?? "";
String addresse1 = prefs.getString('addresse1') ?? "";
setState(() {
widget.nameVornameC.text = nameVorname;
widget.addresse1C.text = addresse1;
});
});
}
@@ -425,21 +429,21 @@ class _NameVornameState extends State<NameVorname> {
flex: 2,
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.namevorname,
enabledBorder: widget.nameVornameC.text.isEmpty
hintText: AppLocalizations.of(context)!.adresse1,
enabledBorder: widget.addresse1C.text.isEmpty
? const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.red))
: const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.green)),
focusedBorder: widget.nameVornameC.text.isEmpty
focusedBorder: widget.addresse1C.text.isEmpty
? const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.red))
: const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.green)),
),
controller: widget.nameVornameC,
controller: widget.addresse1C,
onChanged: (value) => setState(() {
widget.nameVornameC.text = value;
widget.addresse1C.text = value;
}),
)),
Expanded(
@@ -447,20 +451,20 @@ class _NameVornameState extends State<NameVorname> {
child: Align(
alignment: Alignment.bottomLeft,
child: FutureBuilder<List<Map<String, dynamic>>>(
future: NameVorname,
future: Addresse1,
builder: (BuildContext context,
AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.hasData) {
return DropdownButton<String>(
items: snapshot.data!
.map((item) =>
buildMenuItem(item['NameVorname'].toString()))
buildMenuItem(item['Addresse1'].toString()))
.toList(),
onChanged: (value) {
setState(
() {
selectedRudel = value;
widget.nameVornameC.text = value ?? '';
widget.addresse1C.text = value ?? '';
},
);
},
@@ -486,25 +490,25 @@ class _NameVornameState extends State<NameVorname> {
);
}
// PLZOrt
// Addresse2
class PLZOrt extends StatefulWidget {
final TextEditingController plzOrtC;
class Addresse2 extends StatefulWidget {
final TextEditingController addresse2C;
const PLZOrt({super.key, required this.plzOrtC});
const Addresse2({super.key, required this.addresse2C});
@override
State<PLZOrt> createState() => _PLZOrtState();
State<Addresse2> createState() => _Addresse2State();
}
class _PLZOrtState extends State<PLZOrt> {
class _Addresse2State extends State<Addresse2> {
String? selectedRudel;
late Future<List<Map<String, dynamic>>> PLZOrt;
late Future<List<Map<String, dynamic>>> Addresse2;
@override
void initState() {
super.initState();
PLZOrt = DBHelper().getPlace();
Addresse2 = DBHelper().getPlace();
}
@override
@@ -515,10 +519,10 @@ class _PLZOrtState extends State<PLZOrt> {
flex: 2,
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.plzort),
controller: widget.plzOrtC,
hintText: AppLocalizations.of(context)!.adresse2),
controller: widget.addresse2C,
onChanged: (value) => setState(() {
widget.plzOrtC.text = value;
widget.addresse2C.text = value;
}),
)),
Expanded(
@@ -526,19 +530,19 @@ class _PLZOrtState extends State<PLZOrt> {
child: Align(
alignment: Alignment.bottomLeft,
child: FutureBuilder<List<Map<String, dynamic>>>(
future: PLZOrt,
future: Addresse2,
builder: (BuildContext context,
AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.hasData) {
return DropdownButton<String>(
items: snapshot.data!
.map((item) => buildMenuItem(item['PLZOrt'].toString()))
.map((item) => buildMenuItem(item['Addresse2'].toString()))
.toList(),
onChanged: (value) {
setState(
() {
selectedRudel = value;
widget.plzOrtC.text = value ?? '';
widget.addresse2C.text = value ?? '';
},
);
},
@@ -564,25 +568,25 @@ class _PLZOrtState extends State<PLZOrt> {
);
}
// EmailTel
// Addresse3
class EmailTel extends StatefulWidget {
final TextEditingController emailTelC;
class Addresse3 extends StatefulWidget {
final TextEditingController addresse3C;
const EmailTel({super.key, required this.emailTelC});
const Addresse3({super.key, required this.addresse3C});
@override
State<EmailTel> createState() => _EmailTelState();
State<Addresse3> createState() => _Addresse3State();
}
class _EmailTelState extends State<EmailTel> {
class _Addresse3State extends State<Addresse3> {
String? selectedRudel;
late Future<List<Map<String, dynamic>>> EmailTel;
late Future<List<Map<String, dynamic>>> Addresse3;
@override
void initState() {
super.initState();
EmailTel = DBHelper().getPlace();
Addresse3 = DBHelper().getPlace();
}
@override
@@ -593,28 +597,28 @@ class _EmailTelState extends State<EmailTel> {
flex: 2,
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.emailtel),
controller: widget.emailTelC,
hintText: AppLocalizations.of(context)!.adresse3),
controller: widget.addresse3C,
)),
Expanded(
flex: 1,
child: Align(
alignment: Alignment.bottomLeft,
child: FutureBuilder<List<Map<String, dynamic>>>(
future: EmailTel,
future: Addresse3,
builder: (BuildContext context,
AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.hasData) {
return DropdownButton<String>(
items: snapshot.data!
.map((item) =>
buildMenuItem(item['EmailTel'].toString()))
buildMenuItem(item['Addresse3'].toString()))
.toList(),
onChanged: (value) {
setState(
() {
selectedRudel = value;
widget.emailTelC.text = value ?? '';
widget.addresse3C.text = value ?? '';
},
);
},
@@ -659,7 +663,7 @@ class _BLandState extends State<BLand> {
void initState() {
super.initState();
_loadPref();
if (widget.bLandC.text == "") _loadPref();
BLand = DBHelper().getPlace();
}
@@ -949,7 +953,8 @@ class _OrtInfoState extends State<OrtInfo> {
flex: 2,
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.ortinfo,),
hintText: AppLocalizations.of(context)!.ortinfo,
),
controller: widget.ortInfoC,
onChanged: (value) => setState(() {
widget.ortInfoC.text = value;
@@ -1006,7 +1011,7 @@ class Status extends StatefulWidget {
final String initialStatus;
const Status(
{super.key, required this.onStatusChanged, this.initialStatus = 'aktiv'});
{super.key, required this.onStatusChanged, this.initialStatus = 'Aktiv'});
@override
State<Status> createState() => _StatusState();
@@ -1043,7 +1048,7 @@ class _StatusState extends State<Status> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.inaktiv),
leading: Radio<String>(
value: 'inaktiv',
value: 'anaktiv',
groupValue: _selectedStatus,
onChanged: (value) {
setState(() {
@@ -1240,7 +1245,7 @@ class _PlatzungState extends State<Platzung> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.kirrung),
leading: Radio<String>(
value: 'kirrung',
value: 'Kirrung',
groupValue: _selectedPlatzung,
onChanged: (value) {
setState(() {
@@ -1254,7 +1259,7 @@ class _PlatzungState extends State<Platzung> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.wasserstelle),
leading: Radio<String>(
value: 'wasserstelle',
value: 'Wasserstelle',
groupValue: _selectedPlatzung,
onChanged: (value) {
setState(() {
@@ -1268,7 +1273,7 @@ class _PlatzungState extends State<Platzung> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.wald),
leading: Radio<String>(
value: 'wald',
value: 'Wald',
groupValue: _selectedPlatzung,
onChanged: (value) {
setState(() {
@@ -1282,7 +1287,7 @@ class _PlatzungState extends State<Platzung> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.wildwechsel),
leading: Radio<String>(
value: 'wildwechsel',
value: 'Wildwechsel',
groupValue: _selectedPlatzung,
onChanged: (value) {
setState(() {
@@ -1296,7 +1301,7 @@ class _PlatzungState extends State<Platzung> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.wegstrasse),
leading: Radio<String>(
value: 'weg/straße',
value: 'Weg/Straße',
groupValue: _selectedPlatzung,
onChanged: (value) {
setState(() {
@@ -1310,7 +1315,7 @@ class _PlatzungState extends State<Platzung> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.hofgarten),
leading: Radio<String>(
value: 'hof/garten',
value: 'Hof/Garten',
groupValue: _selectedPlatzung,
onChanged: (value) {
setState(() {
@@ -1324,7 +1329,7 @@ class _PlatzungState extends State<Platzung> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.wiesefeld),
leading: Radio<String>(
value: 'wiese/feld/offenfläche',
value: 'Wiese/Feld/Offenfläche',
groupValue: _selectedPlatzung,
onChanged: (value) {
setState(() {
@@ -1371,7 +1376,7 @@ class _FotoFilmState extends State<FotoFilm> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.foto),
leading: Radio<String>(
value: 'foto',
value: 'Foto',
groupValue: _selectedFotoFilm,
onChanged: (value) {
setState(() {
@@ -1385,7 +1390,7 @@ class _FotoFilmState extends State<FotoFilm> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.film),
leading: Radio<String>(
value: 'film',
value: 'Film',
groupValue: _selectedFotoFilm,
onChanged: (value) {
setState(() {
@@ -1406,7 +1411,8 @@ class MEZ extends StatefulWidget {
final Function(String) onMEZChanged;
final String initialMEZ;
const MEZ({super.key, required this.onMEZChanged, this.initialMEZ = 'sommerzeit'});
const MEZ(
{super.key, required this.onMEZChanged, this.initialMEZ = 'sommerzeit'});
@override
State<MEZ> createState() => _MEZState();
@@ -1429,7 +1435,7 @@ class _MEZState extends State<MEZ> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.sommerzeit),
leading: Radio<String>(
value: 'sommerzeit',
value: 'Sommerzeit',
groupValue: _selectedMEZ,
onChanged: (value) {
setState(() {
@@ -1443,7 +1449,7 @@ class _MEZState extends State<MEZ> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.winterzeit),
leading: Radio<String>(
value: 'winterzeit',
value: 'Winterzeit',
groupValue: _selectedMEZ,
onChanged: (value) {
setState(() {
@@ -1543,7 +1549,7 @@ class Bearsafe extends StatefulWidget {
const Bearsafe(
{super.key,
required this.onBearsafeChanged,
this.initialBearsafe = 'nein'});
this.initialBearsafe = 'Nein'});
@override
State<Bearsafe> createState() => _BearsafeState();
@@ -1566,7 +1572,7 @@ class _BearsafeState extends State<Bearsafe> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.nein),
leading: Radio<String>(
value: 'nein',
value: 'Nein',
groupValue: _selectedBearsafe,
onChanged: (value) {
setState(() {
@@ -1580,7 +1586,7 @@ class _BearsafeState extends State<Bearsafe> {
visualDensity: const VisualDensity(vertical: -4),
title: Text(AppLocalizations.of(context)!.ja),
leading: Radio<String>(
value: 'ja',
value: 'Ja',
groupValue: _selectedBearsafe,
onChanged: (value) {
setState(() {
@@ -1613,20 +1619,23 @@ class _KontDatState extends State<KontDat> {
Widget build(BuildContext context) {
return Row(
children: [
Column(children: [
Row(children: [
SizedBox(
width: 125,
child: ElevatedButton(
onPressed: () async {
final date = await pickDate();
if (date == null) return;
setState(() => kontDat = date);
},
child: Text(AppLocalizations.of(context)!.pickkontdat)),
),
const SizedBox(
width: 10,
),
Text(
'${kontDat?.day}. ${kontDat?.month}. ${kontDat?.year}',
),
const SizedBox(
height: 8,
),
ElevatedButton(
onPressed: () async {
final date = await pickDate();
if (date == null) return;
setState(() => kontDat = date);
},
child: Text(AppLocalizations.of(context)!.pickkontdat)),
]),
],
);
@@ -1667,20 +1676,23 @@ class _AbbauDatState extends State<AbbauDat> {
Widget build(BuildContext context) {
return Row(
children: [
Column(children: [
Row(children: [
SizedBox(
width: 125,
child: ElevatedButton(
onPressed: () async {
final date = await pickDate();
if (date == null) return;
setState(() => abbauDat = date);
},
child: Text(AppLocalizations.of(context)!.pickabbaudat)),
),
const SizedBox(
width: 10,
),
Text(
'${abbauDat?.day}. ${abbauDat?.month}. ${abbauDat?.year}',
),
const SizedBox(
height: 8,
),
ElevatedButton(
onPressed: () async {
final date = await pickDate();
if (date == null) return;
setState(() => abbauDat = date);
},
child: Text(AppLocalizations.of(context)!.pickabbaudat)),
]),
],
);
@@ -2188,7 +2200,18 @@ class _AltStOrtState extends State<AltStOrt> {
flex: 3,
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.altstort),
hintText: AppLocalizations.of(context)!.altstort,
enabledBorder: widget.altStOrtC.text.isEmpty
? const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.red))
: const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.green)),
focusedBorder: widget.altStOrtC.text.isEmpty
? const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.red))
: const UnderlineInputBorder(
borderSide: BorderSide(color: Colors.green)),
),
controller: widget.altStOrtC,
)),
Expanded(
@@ -2253,7 +2276,20 @@ class _AusVonState extends State<AusVon> {
Widget build(BuildContext context) {
return Row(
children: [
Column(children: [
Row(children: [
SizedBox(
width: 125,
child: ElevatedButton(
onPressed: () async {
final date = await pickDate();
if (date == null) return;
setState(() => ausVon = date);
},
child: Text(AppLocalizations.of(context)!.ausvon)),
),
const SizedBox(
width: 10,
),
Builder(builder: (context) {
if (ausVon != null) {
return Text('${ausVon?.day}. ${ausVon?.month}. ${ausVon?.year}');
@@ -2261,16 +2297,6 @@ class _AusVonState extends State<AusVon> {
return Text(AppLocalizations.of(context)!.nichts);
}
}),
const SizedBox(
height: 8,
),
ElevatedButton(
onPressed: () async {
final date = await pickDate();
if (date == null) return;
setState(() => ausVon = date);
},
child: Text(AppLocalizations.of(context)!.ausvon)),
]),
],
);
@@ -2311,7 +2337,20 @@ class _AusBisState extends State<AusBis> {
Widget build(BuildContext context) {
return Row(
children: [
Column(children: [
Row(children: [
SizedBox(
width: 125,
child: ElevatedButton(
onPressed: () async {
final date = await pickDate();
if (date == null) return;
setState(() => ausBis = date);
},
child: Text(AppLocalizations.of(context)!.ausbis)),
),
const SizedBox(
width: 10,
),
Builder(builder: (context) {
if (ausBis != null) {
return Text('${ausBis?.day}. ${ausBis?.month}. ${ausBis?.year}');
@@ -2319,16 +2358,6 @@ class _AusBisState extends State<AusBis> {
return Text(AppLocalizations.of(context)!.nichts);
}
}),
const SizedBox(
height: 8,
),
ElevatedButton(
onPressed: () async {
final date = await pickDate();
if (date == null) return;
setState(() => ausBis = date);
},
child: Text(AppLocalizations.of(context)!.ausbis)),
]),
],
);
@@ -2515,16 +2544,16 @@ class _IntKommState extends State<IntKomm> {
// KontSum
class KontSum extends StatefulWidget {
final TextEditingController kontSumC;
class Betreuung extends StatefulWidget {
final TextEditingController betreuungC;
const KontSum({super.key, required this.kontSumC});
const Betreuung({super.key, required this.betreuungC});
@override
State<KontSum> createState() => _KontSumState();
State<Betreuung> createState() => _BetreuungState();
}
class _KontSumState extends State<KontSum> {
class _BetreuungState extends State<Betreuung> {
String? selectedRudel;
late Future<List<Map<String, dynamic>>> KontSum;
@@ -2542,8 +2571,8 @@ class _KontSumState extends State<KontSum> {
flex: 3,
child: TextField(
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.kontsum),
controller: widget.kontSumC,
hintText: AppLocalizations.of(context)!.betreuung),
controller: widget.betreuungC,
)),
Expanded(
flex: 1,
@@ -2563,7 +2592,7 @@ class _KontSumState extends State<KontSum> {
setState(
() {
selectedRudel = value;
widget.kontSumC.text = value ?? '';
widget.betreuungC.text = value ?? '';
},
);
},