sitzung luc
This commit is contained in:
@@ -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);
|
||||
();
|
||||
|
||||
@@ -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 ?? '';
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user