133 lines
4.1 KiB
Dart
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)
|
|
],
|
|
);
|
|
}
|
|
}
|