outsourced all methods and dialogs as far as possible (I think)
This commit is contained in:
113
lib/screens/excursion/widgets/hinweise.dart
Normal file
113
lib/screens/excursion/widgets/hinweise.dart
Normal file
@@ -0,0 +1,113 @@
|
||||
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<Hinweise> createState() => _HinweiseState();
|
||||
}
|
||||
|
||||
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) {
|
||||
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)
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user