Files
fforte/lib/screens/excursion/widgets/hinweise.dart
2025-05-27 22:45:58 +02:00

116 lines
3.4 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();
}
// TODO mail
class _HinweiseState extends State<Hinweise> {
// 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<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 += ",";
}
if (key == "sonstiges") {
widget.hinweise.text += sonstigesController.text;
} else if (props[key]!){
widget.hinweise.text += key;
}
firstRun = false;
}
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)
],
);
}
}