import 'package:fforte/enums/databases.dart'; import 'package:fforte/screens/sharedWidgets/var_text_field.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_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 bool liegestelleChecked = false; bool kadaverChecked = false; bool sichtungChecked = false; bool heulenChecked = false; bool sonstigesChecked = false; // for sonstiges textfield TextEditingController sonstigesController = TextEditingController(); @override void initState() { super.initState(); sonstigesController.addListener(updateController); } @override void dispose() { sonstigesController.dispose(); super.dispose(); } void updateController() { Map 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) { widget.hinweise.text += ";"; } if (key == "sonstiges") { widget.hinweise.text += "$key:${sonstigesController.text}"; } else { widget.hinweise.text += "$key:${props[key]}"; } firstRun = false; } } @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) { setState(() => sonstigesChecked = value ?? false); updateController(); }), if (sonstigesChecked) VarTextField( textController: sonstigesController, localization: AppLocalizations.of(context)!.sonstiges, dbName: "HinweiseSonstiges", required: false, dbDesignation: DatabasesEnum.excursion) ], ); } }