diff --git a/Todo.txt b/Todo.txt
index c631f54..6b2ae69 100644
--- a/Todo.txt
+++ b/Todo.txt
@@ -2,6 +2,26 @@ todo:
TESTEN!!
maybe auch vorschläge aus templates in dropdown menüs anzeigen
eintrag in db wenn http response (in sent column)
+nachricht wenn einstellungen erfolgreich geändert
+view cams übersetzen
+abbaudat leer
+datum step redesign (maybe linien dazwischen und sized box zwischen text und button weg)
+beim nächsten schritt als template
+im englischen abändern
+systematic ???
+standort automatisch in Karte
+karte drehen aus
+Auftrag absätze machen und textfeld größer wenn langer text
+beim letzten weiter alle leeren felder anzeigen (array zurückgeben)
+gespeicherten ordner anzeigen
+zurückfeld in datenansicht
+überschriften für view cams
+Überall wo Kameras steht standorte hinschreiben
+null eintrag in dropdown menüs weg
+speichern funktion zum Abbrechen
+fehler beim speichern anzeigen
+ktage raus
+
not to do:
clean db_helper
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index b28214f..e778bcf 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -32,4 +32,5 @@
+
diff --git a/lib/addCam/add_cam_main.dart b/lib/addCam/add_cam_main.dart
index 18f321b..8e45517 100644
--- a/lib/addCam/add_cam_main.dart
+++ b/lib/addCam/add_cam_main.dart
@@ -10,6 +10,7 @@ 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;
class AddCamMain extends StatefulWidget {
final bool isTemplate;
@@ -49,10 +50,10 @@ class _AddCamMainState extends State {
TextEditingController intKommC = TextEditingController();
TextEditingController kontSumC = TextEditingController();
- String selectedStatus = 'inaktiv';
+ String selectedStatus = 'aktiv';
String selectedSTTyp = 'opportunistisch';
String selectedFotoFilm = 'foto';
- String selectedMEZ = 'mez';
+ String selectedMEZ = 'sommerzeit';
String selectedPlatzung = 'kirrung';
String selectedBearsafe = 'nein';
@@ -69,11 +70,11 @@ class _AddCamMainState extends State {
headingAccuracy: 0.0);
String datumS = DateFormat('yyyy-MM-dd').format(DateTime.now());
- String kontDatS = DateFormat('yyyy-mm-dd').format(DateTime.now());
- String abbauDatS = DateFormat('yyyy-mm-dd').format(DateTime.now());
- String ausVonS = DateFormat('yyyy-mm-dd').format(DateTime(2000));
- String ausBisS = DateFormat('yyyy-mm-dd').format(DateTime(2000));
- String protoAmS = DateFormat('yyyy-mm-dd').format(DateTime.now());
+ String kontDatS = DateFormat('yyyy-MM-dd').format(DateTime.now());
+ String abbauDatS = DateFormat('yyyy-MM-dd').format(DateTime.now());
+ String ausVonS = DateFormat('yyyy-MM-dd').format(DateTime(2000));
+ String ausBisS = DateFormat('yyyy-MM-dd').format(DateTime(2000));
+ String protoAmS = DateFormat('yyyy-MM-dd').format(DateTime.now());
DateTime? ausBis;
DateTime? ausVon;
DateTime abbauDat = DateTime.now();
@@ -207,15 +208,17 @@ class _AddCamMainState extends State {
title: Text(AppLocalizations.of(context)!.savemethod),
actions: [
TextButton(
- onPressed: () {
- Navigator.pushNamedAndRemoveUntil(context, '/home', (route) => false);
+ onPressed: () async {
+ _httpRequest();
+ // Navigator.pushNamedAndRemoveUntil(context, '/home', (route) => false);
},
child: Text(AppLocalizations.of(context)!.sendtoserver)),
TextButton(
onPressed: () async {
await saveFile();
// ignore: use_build_context_synchronously
- Navigator.pushNamedAndRemoveUntil(context, '/home', (route) => false);
+ Navigator.pushNamedAndRemoveUntil(
+ context, '/home', (route) => false);
},
child: Text(AppLocalizations.of(context)!.saveasfile))
],
@@ -223,9 +226,55 @@ class _AddCamMainState extends State {
});
}
+ void _httpRequest() async {
+ Map 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,
+ };
+
+ final response = await http.post(Uri.parse("http://192.168.178.30/www.dbb-wolf.de/data/_nicoapi.php"),
+ headers: {
+ 'Content-Type': 'application/json; charset=UTF-8',
+ },
+ body: jsonEncode(place));
+ print(response);
+ }
+
Future saveFile() async {
String? selectedDirectory = await FilePicker.platform.getDirectoryPath();
-
+
Map place = {
'CID': id.text,
'Rudel': rudelC.text,
@@ -270,8 +319,7 @@ class _AddCamMainState extends State {
File file = File('$selectedDirectory/cam-${id.text}.txt');
- await file
- .writeAsString(jsonPlace);
+ await file.writeAsString(jsonPlace);
// ignore: use_build_context_synchronously
ScaffoldMessenger.of(context).showSnackBar(
@@ -287,7 +335,6 @@ class _AddCamMainState extends State {
'BLand': bLandC,
'Lkr': lkrC,
'BeiOrt': beiOrtC,
- 'OrtInfo': ortInfoC,
'Status': TextEditingController(text: selectedStatus),
'STTyp': TextEditingController(text: selectedSTTyp),
'FFTyp': ffTypC,
@@ -572,7 +619,7 @@ class _AddCamMainState extends State {
alignment: Alignment.bottomLeft,
child: Row(
children: [
- Text(AppLocalizations.of(context)!.sommerzeit),
+ Text(AppLocalizations.of(context)!.zeiteinstellung),
const Text(
'*',
style: TextStyle(color: Colors.red),
@@ -685,7 +732,7 @@ class _AddCamMainState extends State {
],
)),
Step(
- title: Text(AppLocalizations.of(context)!.secondStep),
+ title: Text(AppLocalizations.of(context)!.kontakt),
content: Column(
children: [
const SizedBox(
@@ -764,6 +811,7 @@ class _AddCamMainState extends State {
final isLastStep = currentStep == getSteps().length - 1;
if (!isLastStep) {
+ // ! saveTemplate();
setState(() {
currentStep += 1;
});
@@ -774,11 +822,14 @@ class _AddCamMainState extends State {
();
return;
} else if (empty == false) {
+ // throw const FormatException(("Speichert"));
saveData();
await showSaveOptionsDialog();
Navigator.pushNamedAndRemoveUntil(
// ignore: use_build_context_synchronously
- context, '/home', (route) => false);
+ context,
+ '/home',
+ (route) => false);
}
}
},
diff --git a/lib/addCam/cam_widgets.dart b/lib/addCam/cam_widgets.dart
index c52eff7..6abe2a1 100644
--- a/lib/addCam/cam_widgets.dart
+++ b/lib/addCam/cam_widgets.dart
@@ -351,9 +351,9 @@ class _DatumState extends State {
Text(
'${datum?.day}. ${datum?.month}. ${datum?.year}',
),
- const SizedBox(
- height: 8,
- ),
+ //const SizedBox(
+ // height: 2,
+ //),
ElevatedButton(
onPressed: () async {
final date = await pickDate();
@@ -949,18 +949,7 @@ class _OrtInfoState extends State {
flex: 2,
child: TextField(
decoration: InputDecoration(
- hintText: AppLocalizations.of(context)!.ortinfo,
- enabledBorder: widget.ortInfoC.text.isEmpty
- ? const UnderlineInputBorder(
- borderSide: BorderSide(color: Colors.red))
- : const UnderlineInputBorder(
- borderSide: BorderSide(color: Colors.green)),
- focusedBorder: widget.ortInfoC.text.isEmpty
- ? const UnderlineInputBorder(
- borderSide: BorderSide(color: Colors.red))
- : const UnderlineInputBorder(
- borderSide: BorderSide(color: Colors.green)),
- ),
+ hintText: AppLocalizations.of(context)!.ortinfo,),
controller: widget.ortInfoC,
onChanged: (value) => setState(() {
widget.ortInfoC.text = value;
@@ -1417,7 +1406,7 @@ class MEZ extends StatefulWidget {
final Function(String) onMEZChanged;
final String initialMEZ;
- const MEZ({super.key, required this.onMEZChanged, this.initialMEZ = 'aktiv'});
+ const MEZ({super.key, required this.onMEZChanged, this.initialMEZ = 'sommerzeit'});
@override
State createState() => _MEZState();
@@ -1438,9 +1427,9 @@ class _MEZState extends State {
children: [
ListTile(
visualDensity: const VisualDensity(vertical: -4),
- title: Text(AppLocalizations.of(context)!.mez),
+ title: Text(AppLocalizations.of(context)!.sommerzeit),
leading: Radio(
- value: 'mez',
+ value: 'sommerzeit',
groupValue: _selectedMEZ,
onChanged: (value) {
setState(() {
@@ -1452,9 +1441,9 @@ class _MEZState extends State {
),
ListTile(
visualDensity: const VisualDensity(vertical: -4),
- title: Text(AppLocalizations.of(context)!.unklar),
+ title: Text(AppLocalizations.of(context)!.winterzeit),
leading: Radio(
- value: 'unklar',
+ value: 'winterzeit',
groupValue: _selectedMEZ,
onChanged: (value) {
setState(() {
diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb
index 1e5e340..37b7747 100644
--- a/lib/l10n/app_de.arb
+++ b/lib/l10n/app_de.arb
@@ -5,30 +5,31 @@
"uncompleted": "Unvollständig",
"deleteEverything": "Alles löschen?",
"deleteEverythingContent": "Alle Kameras werden lokal gelöscht!",
- "camLink": "Link zur Kamera",
- "firstStep": "Kamera, Rudel",
- "secondStep": "Datum, Kontakt",
- "date": "Datum",
+ "camLink": "ID der Kamera",
+ "firstStep": "KAMERA, TERRITORIUM",
+ "secondStep": "DATUM, KONTAKT",
+ "date": "DATUM",
+ "kontakt": "KONTAKT",
"status": "Status",
"viewCamsAppbar": "Kameras ansehen",
- "locations": "Standort",
- "rudel": "Rudel",
+ "locations": "STANDORT",
+ "rudel": "Territorium",
"namevorname": "Name",
"plzort": "PLZ und Ort",
"emailtel": "Email und/oder Telefon",
"bland": "Bundesland",
"lkr": "Landkreis",
"beiort": "Bei Ort",
- "ortinfo": "Ort Info",
+ "ortinfo": "Nähere Ortsbeschreibung",
"aktiv": "Aktiv",
"inaktiv": "Inaktiv",
"opportunistisch": "opportunistisch",
"systematic": "systematisch",
- "fftyp": "Fotofallen typ",
+ "fftyp": "Fotofallentyp",
"foto": "Foto",
"film": "Film",
- "mez": "MEZ",
- "unklar": "Unklar",
+ "sommerzeit": "Sommerzeit",
+ "winterzeit": "Winterzeit",
"intkomm": "Interne Kommunikation",
"kirrung": "Kirrung",
"wasserstelle": "Wasserstelle",
@@ -38,10 +39,10 @@
"kschlonr": "KSchloss Nummer",
"nein": "Nein",
"ja": "Ja",
- "pickkontdat": "KontDat Auswählen",
- "pickabbaudat": "Abbau datum Auswählen",
- "platzung": "Platzung",
- "sommerzeit": "sommerzeit",
+ "pickkontdat": "Datum Kontrolle",
+ "pickabbaudat": "Datum Abbau",
+ "platzung": "Platzierung",
+ "zeiteinstellung": "Zeiteinstellung",
"auftrag": "Auftrag",
"absprachen": "Absprachen",
"sonstbemerkungen": "Sonstige Bemerkungen",
@@ -49,29 +50,29 @@
"fkontakt2": "FKontakt 2",
"fkontakt3": "FKontakt 3",
"hofgarten": "Hof/Garten",
- "altstort": "AltStOrt",
+ "altstort": "Alter Standort",
"wiesefeld": "Wiese/Feld/offenfläche",
"ausvon": "Aus von",
- "nichts": "Nichts",
+ "nichts": "---",
"ausbis": "Aus Bis",
"ktage1": "KTage 1",
"ktage2": "KTage 2",
"eugrid": "EUGrid",
- "pickDate": "Datum Auswählen",
- "pickTime": "Zeit Auswählen",
+ "pickDate": "Datum Aufstelung",
+ "pickTime": "Zeit auswählen",
"delAll": "Alle Kameras löschen",
- "fieldEmpty": "Folgendes Felde ist leer:",
+ "fieldEmpty": "Folgendes Feld ist leer:",
"cancel": "Abbrechen",
"template": "Als Vorlage speichern",
"openMap": "Karte öffnen",
- "saveMap": "Speichern und Schleßen",
+ "saveMap": "Speichern und Schließen",
"locationDisabled": "Standort ausgeschaltet. Bitte einschalten",
"locationForbidden": "Zugriff auf Standort verweigert. Es ist empfohlen dies zu erlauben",
"map": "Karte",
"markerSet": "Marker gesetzt auf",
"kontsum": "Kontrollsumme",
- "bearsafe": "Bärensafe",
- "sttyp": "STTyp",
+ "bearsafe": "Bearsafe",
+ "sttyp": "Status",
"ort": "Ort",
"continueB": "Weiter",
"settings": "Einstellungen",
diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb
index 260f1b2..49fda1a 100644
--- a/lib/l10n/app_en.arb
+++ b/lib/l10n/app_en.arb
@@ -132,14 +132,14 @@
"description": "film radiobutton"
},
- "mez": "MEZ",
- "@mez": {
- "description": "mez radiobutton"
+ "sommerzeit": "Summertime",
+ "@sommerzeit": {
+ "description": "summertime radiobutton"
},
- "unklar": "unclear",
- "@unklar": {
- "description": "unclear radiobutton"
+ "winterzeit": "winterzeit",
+ "@winterzeit": {
+ "description": "winterzeit radiobutton"
},
"kirrung": "Kirrung",
@@ -197,9 +197,14 @@
"description": "platzung header"
},
- "sommerzeit": "Summertime",
- "@sommerzeit": {
- "description": "mez summertime header"
+ "zeiteinstellung": "Timesetting",
+ "@zeiteinstellung": {
+ "description": "summertime header"
+ },
+
+ "kontakt": "Contact",
+ "@kontakt": {
+ "description": "contact header"
},
"auftrag": "Order",
diff --git a/lib/main.dart b/lib/main.dart
index 5c656be..d04bed3 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -31,7 +31,7 @@ class MyApp extends StatelessWidget {
return MaterialApp(
title: 'FFOrte',
theme:
- FlexThemeData.light(scheme: FlexScheme.greenM3, useMaterial3: true),
+ FlexThemeData.light(scheme: FlexScheme.gold, useMaterial3: true),
darkTheme:
FlexThemeData.dark(scheme: FlexScheme.greenM3, useMaterial3: true),
themeMode: ThemeMode.system,
diff --git a/lib/settings.dart b/lib/settings.dart
index 735d316..1c1e38f 100644
--- a/lib/settings.dart
+++ b/lib/settings.dart
@@ -47,6 +47,11 @@ class _SettingsState extends State {
await prefs.setString('nameVorname', nameVornameC.text);
}
+ void _saveBLand() async {
+ final SharedPreferences prefs = await SharedPreferences.getInstance();
+ await prefs.setString('bLand', bLandC.text);
+ }
+
@override
Widget build(BuildContext context) {
return Scaffold(
@@ -95,6 +100,7 @@ class _SettingsState extends State {
child: const Icon(Icons.save),
onPressed: () {
_saveName();
+ _saveBLand();
}),
);
}
diff --git a/lib/viewCam/view_cams.dart b/lib/viewCam/view_cams.dart
index b5fec86..423a7b8 100644
--- a/lib/viewCam/view_cams.dart
+++ b/lib/viewCam/view_cams.dart
@@ -133,7 +133,7 @@ class _ViewCamsState extends State {
Map place =
snapshot.data![index];
return ListTile(
- title: Text('Place ${index + 1}'),
+ title: Text('Standort ${index + 1}'),
subtitle: Text(
'ID: ${place['CID']} DATUM: ${place['Datum']}'),
trailing: Checkbox(
@@ -199,7 +199,7 @@ class _ViewCamsState extends State {
Text(
'${AppLocalizations.of(context)!.ausbis}: ${place['AusBis']}'),
Text(
- '${AppLocalizations.of(context)!.mez}: ${place['MEZ']}'),
+ '${AppLocalizations.of(context)!.sommerzeit}: ${place['MEZ']}'),
Text(
'${AppLocalizations.of(context)!.kontsum}: ${place['KontSum']}'),
Text(
diff --git a/pubspec.lock b/pubspec.lock
index 5c22657..fa3832a 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -238,13 +238,13 @@ packages:
source: hosted
version: "0.2.2"
http:
- dependency: transitive
+ dependency: "direct main"
description:
name: http
- sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba
+ sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938"
url: "https://pub.dev"
source: hosted
- version: "1.2.0"
+ version: "1.2.1"
http_parser:
dependency: transitive
description:
@@ -481,10 +481,10 @@ packages:
dependency: transitive
description:
name: shared_preferences_web
- sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21"
+ sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a"
url: "https://pub.dev"
source: hosted
- version: "2.2.2"
+ version: "2.3.0"
shared_preferences_windows:
dependency: transitive
description:
@@ -622,10 +622,10 @@ packages:
dependency: transitive
description:
name: web
- sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
+ sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
url: "https://pub.dev"
source: hosted
- version: "0.3.0"
+ version: "0.5.1"
win32:
dependency: transitive
description:
@@ -651,5 +651,5 @@ packages:
source: hosted
version: "1.0.4"
sdks:
- dart: ">=3.2.0 <4.0.0"
- flutter: ">=3.16.0"
+ dart: ">=3.3.0 <4.0.0"
+ flutter: ">=3.19.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index d0eaee8..352dcf8 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -46,6 +46,7 @@ dependencies:
shared_preferences: ^2.2.2
flutter_file_dialog: ^3.0.2
file_picker: ^6.2.0
+ http: ^1.2.1
dev_dependencies:
flutter_lints: ^3.0.1
diff --git a/time.txt b/time.txt
index 16f6ebd..98e45f1 100644
--- a/time.txt
+++ b/time.txt
@@ -21,7 +21,7 @@
18 dez 2h
20 dez 15 min
21 dez 1h 45 min
-24 jan 1 20 min
+24 jan 1h 20 min
25 jan 30 min
26 jan 1h 10 min
31 jan 1h 10 min
@@ -37,4 +37,6 @@
26 feb 1h 30 min
27 feb 1h 10 min
2 mär 1h 30 min
-7 mär 1h
\ No newline at end of file
+7 mär 1h
+
+- abgerechnet -
\ No newline at end of file