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 createState() => _HinweiseState(); } class _HinweiseState extends State { // 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("Wildtierkadaver") ? 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 != "Wildtierkadaver" && 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 props = { "Liegestelle": liegestelleChecked, "Wildtierkadaver": 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) ], ); } }