Files
fforte/lib/screens/excursion/widgets/hinweise.dart
2025-06-03 22:31:55 +02:00

133 lines
4.1 KiB
Dart

import 'package:fforte/enums/databases.dart';
import 'package:fforte/screens/sharedWidgets/var_text_field.dart';
import 'package:flutter/material.dart';
import 'package:fforte/l10n/app_localizations.dart';
class Hinweise extends StatefulWidget {
final TextEditingController hinweise;
const Hinweise({super.key, required this.hinweise});
@override
State<Hinweise> createState() => _HinweiseState();
}
class _HinweiseState extends State<Hinweise> {
// Vars for Checkboxes
late bool liegestelleChecked;
late bool kadaverChecked;
late bool sichtungChecked;
late bool heulenChecked;
bool sonstigesChecked = false;
// for sonstiges textfield
TextEditingController sonstigesController = TextEditingController();
@override
void initState() {
sonstigesController.addListener(updateController);
liegestelleChecked = widget.hinweise.text.contains("liegestelle") ? true : false;
kadaverChecked = widget.hinweise.text.contains("kadaver") ? true : false;
sichtungChecked = widget.hinweise.text.contains("sichtung") ? true : false;
heulenChecked = widget.hinweise.text.contains("heulen") ? true : false;
bool firstRun = true;
for (String val in widget.hinweise.text.split(",")) {
if (val != "liegestelle" && val != "kadaver" && val != "sichtung" && val != "heulen" && val != "") {
sonstigesChecked = true;
if (!firstRun) sonstigesController.text += ",";
sonstigesController.text += val;
firstRun = false;
}
}
super.initState();
}
@override
void dispose() {
sonstigesController.dispose();
super.dispose();
}
void updateController() {
Map<String, bool> props = {
"liegestelle": liegestelleChecked,
"kadaver": kadaverChecked,
"sichtung": sichtungChecked,
"heulen": heulenChecked,
"sonstiges": sonstigesChecked
};
bool firstRun = true;
widget.hinweise.text = "";
for (String key in props.keys) {
if (!firstRun && props[key]!) {
widget.hinweise.text += ",";
} else if (firstRun && props[key]!) {
firstRun = false;
}
if (key == "sonstiges") {
widget.hinweise.text += sonstigesController.text;
} else if (props[key]!){
widget.hinweise.text += key;
}
}
debugPrint(widget.hinweise.text);
}
@override
Widget build(BuildContext context) {
return Column(
children: [
CheckboxListTile(
title: Text(AppLocalizations.of(context)!.liegestelle),
value: liegestelleChecked,
onChanged: (bool? value) {
setState(() => liegestelleChecked = value ?? false);
updateController();
}),
CheckboxListTile(
title: Text(AppLocalizations.of(context)!.wildtierKadaver),
value: kadaverChecked,
onChanged: (bool? value) {
setState(() => kadaverChecked = value ?? false);
updateController();
}),
CheckboxListTile(
title: Text(AppLocalizations.of(context)!.sichtung),
value: sichtungChecked,
onChanged: (bool? value) {
setState(() => sichtungChecked = value ?? false);
updateController();
}),
CheckboxListTile(
title: Text(AppLocalizations.of(context)!.heulen),
value: heulenChecked,
onChanged: (bool? value) {
setState(() => heulenChecked = value ?? false);
updateController();
}),
CheckboxListTile(
title: Text(AppLocalizations.of(context)!.sonstiges),
value: sonstigesChecked,
onChanged: (bool? value) {
if (!value!) sonstigesController.text = "";
setState(() => sonstigesChecked = value);
updateController();
}),
if (sonstigesChecked)
VarTextField(
textController: sonstigesController,
localization: AppLocalizations.of(context)!.sonstiges,
dbName: "HinweiseSonstiges",
required: false,
dbDesignation: DatabasesEnum.excursion)
],
);
}
}