let AI comment everything because well... yeah...

This commit is contained in:
Nico
2025-06-06 21:00:32 +02:00
parent 9c84d0c375
commit cc110ac104
44 changed files with 1230 additions and 646 deletions

View File

@@ -1,15 +1,34 @@
// * Widget for tracking various wildlife monitoring quantities
// * Features:
// * - Tracking of droppings (Losung) counts and samples
// * - Urine marking spot counts and samples
// * - Estrus blood sample tracking
// * - Hair sample tracking
// * All fields support genetic sample counting
import 'package:flutter/material.dart';
import 'package:fforte/l10n/app_localizations.dart';
/// Widget for managing counts of various wildlife monitoring samples
/// Provides input fields for different types of samples and their genetic subsets
class Anzahlen extends StatefulWidget {
/// Controller for number of droppings found
final TextEditingController losungAnz;
/// Controller for number of droppings collected
final TextEditingController losungGes;
/// Controller for number of genetic samples from droppings
final TextEditingController losungGen;
/// Controller for number of urine marking spots
final TextEditingController urinAnz;
/// Controller for number of genetic samples from urine
final TextEditingController urinGen;
/// Controller for number of estrus blood spots
final TextEditingController oestrAnz;
/// Controller for number of genetic samples from estrus blood
final TextEditingController oestrGen;
/// Controller for number of hair samples
final TextEditingController haarAnz;
/// Controller for number of genetic samples from hair
final TextEditingController haarGen;
const Anzahlen(
@@ -28,6 +47,7 @@ class Anzahlen extends StatefulWidget {
AnzahlenState createState() => AnzahlenState();
}
/// State class for the quantity tracking widget
class AnzahlenState extends State<Anzahlen> {
@override
Widget build(BuildContext context) {
@@ -37,6 +57,7 @@ class AnzahlenState extends State<Anzahlen> {
children: [
Column(
children: [
// Droppings count section
Row(
children: [
Expanded(
@@ -46,9 +67,7 @@ class AnzahlenState extends State<Anzahlen> {
child: Text(
AppLocalizations.of(context)!.anzahlLosungen)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
child: Align(
alignment: Alignment.centerLeft, child: TextField(
@@ -57,9 +76,7 @@ class AnzahlenState extends State<Anzahlen> {
onTap: () => widget.losungAnz.selection = TextSelection(baseOffset: 0, extentOffset: widget.losungAnz.value.text.length),
)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
flex: 2,
child: Align(
@@ -67,9 +84,7 @@ class AnzahlenState extends State<Anzahlen> {
child: Text(
AppLocalizations.of(context)!.davonEingesammelt)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
child: Align(
alignment: Alignment.centerLeft, child: TextField(
@@ -78,11 +93,10 @@ class AnzahlenState extends State<Anzahlen> {
onTap: () => widget.losungGes.selection = TextSelection(baseOffset: 0, extentOffset: widget.losungGes.value.text.length),
)),
),
const SizedBox(
height: 20,
),
const SizedBox(height: 20),
],
),
// Genetic samples from droppings
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
@@ -94,9 +108,7 @@ class AnzahlenState extends State<Anzahlen> {
AppLocalizations.of(context)!.davonGenetikproben),
),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
child: Align(
alignment: Alignment.centerLeft, child: TextField(
@@ -107,9 +119,8 @@ class AnzahlenState extends State<Anzahlen> {
),
],
),
const Divider(
height: 40,
),
const Divider(height: 40),
// Urine marking spots section
Row(
children: [
Expanded(
@@ -119,9 +130,7 @@ class AnzahlenState extends State<Anzahlen> {
child: Text(AppLocalizations.of(context)!
.anzahlUrinMakierstellen)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
child: Align(
alignment: Alignment.centerLeft, child: TextField(
@@ -130,9 +139,7 @@ class AnzahlenState extends State<Anzahlen> {
onTap: () => widget.urinAnz.selection = TextSelection(baseOffset: 0, extentOffset: widget.urinAnz.value.text.length),
)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
flex: 2,
child: Align(
@@ -140,9 +147,7 @@ class AnzahlenState extends State<Anzahlen> {
child: Text(AppLocalizations.of(context)!
.davonGenetikproben)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
child: Align(
alignment: Alignment.centerLeft, child: TextField(
@@ -151,14 +156,11 @@ class AnzahlenState extends State<Anzahlen> {
onTap: () => widget.urinGen.selection = TextSelection(baseOffset: 0, extentOffset: widget.urinGen.value.text.length),
)),
),
const SizedBox(
height: 20,
),
const SizedBox(height: 20),
],
),
const Divider(
height: 40,
),
const Divider(height: 40),
// Estrus blood section
Row(
children: [
Expanded(
@@ -168,9 +170,7 @@ class AnzahlenState extends State<Anzahlen> {
child: Text(
AppLocalizations.of(context)!.anzahlOestrusblut)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
child: Align(
alignment: Alignment.centerLeft, child: TextField(
@@ -179,9 +179,7 @@ class AnzahlenState extends State<Anzahlen> {
onTap: () => widget.oestrAnz.selection = TextSelection(baseOffset: 0, extentOffset: widget.oestrAnz.value.text.length),
)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
flex: 2,
child: Align(
@@ -189,9 +187,7 @@ class AnzahlenState extends State<Anzahlen> {
child: Text(AppLocalizations.of(context)!
.davonGenetikproben)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
child: Align(
alignment: Alignment.centerLeft, child: TextField(
@@ -200,14 +196,11 @@ class AnzahlenState extends State<Anzahlen> {
onTap: () => widget.oestrGen.selection = TextSelection(baseOffset: 0, extentOffset: widget.oestrGen.value.text.length),
)),
),
const SizedBox(
height: 20,
),
const SizedBox(height: 20),
],
),
const Divider(
height: 40,
),
const Divider(height: 40),
// Hair samples section
Row(
children: [
Expanded(
@@ -217,9 +210,7 @@ class AnzahlenState extends State<Anzahlen> {
child: Text(
AppLocalizations.of(context)!.anzahlHaarproben)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
child: Align(
alignment: Alignment.centerLeft, child: TextField(
@@ -228,9 +219,7 @@ class AnzahlenState extends State<Anzahlen> {
onTap: () => widget.haarAnz.selection = TextSelection(baseOffset: 0, extentOffset: widget.haarAnz.value.text.length),
)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
flex: 2,
child: Align(
@@ -238,9 +227,7 @@ class AnzahlenState extends State<Anzahlen> {
child: Text(AppLocalizations.of(context)!
.davonGenetikproben)),
),
const SizedBox(
width: 20,
),
const SizedBox(width: 20),
Expanded(
child: Align(
alignment: Alignment.centerLeft, child: TextField(
@@ -249,9 +236,7 @@ class AnzahlenState extends State<Anzahlen> {
onTap: () => widget.haarGen.selection = TextSelection(baseOffset: 0, extentOffset: widget.haarGen.value.text.length),
)),
),
const SizedBox(
height: 20,
),
const SizedBox(height: 20),
],
),
],