finished functionality of distance traveled and track condition widget

This commit is contained in:
Nico
2025-05-05 23:32:38 +02:00
parent 2b89c0a5b8
commit ba6699db0d

View File

@@ -1,8 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// TODO FINISH!!
class StreckeUSpurbedingungen extends StatefulWidget {
final TextEditingController kmAutoController;
final TextEditingController kmFussController;
@@ -25,6 +23,85 @@ class StreckeUSpurbedingungen extends StatefulWidget {
}
class StreckeUSpurbedingungenState extends State<StreckeUSpurbedingungen> {
// vars for percent text fields
String carPercent = "0";
String footPercent = "0";
String bikePercent = "0";
String goodPercent = "0";
String middlePercent = "0";
String badPercent = "0";
String totalKm = "0";
@override
void initState() {
super.initState();
// Travle Distance
widget.kmAutoController.addListener(onDistanceTravledUpdated);
widget.kmFussController.addListener(onDistanceTravledUpdated);
widget.kmRadController.addListener(onDistanceTravledUpdated);
widget.kmAutoController.text = "0";
widget.kmFussController.text = "0";
widget.kmRadController.text = "0";
// Track Conditions
widget.spGutController.addListener(onTrackConditionsUpdated);
widget.spMittelController.addListener(onTrackConditionsUpdated);
widget.spSchlechtController.addListener(onTrackConditionsUpdated);
widget.spGutController.text = "0";
widget.spMittelController.text = "0";
widget.spSchlechtController.text = "0";
}
void onDistanceTravledUpdated() {
try {
double kmAuto = double.parse(widget.kmAutoController.text);
double kmFuss = double.parse(widget.kmFussController.text);
double kmRad = double.parse(widget.kmRadController.text);
double gesKm = (kmAuto + kmFuss + kmRad);
if (gesKm == 0) {
carPercent = "0";
footPercent = "0";
bikePercent = "0";
} else {
carPercent = (kmAuto / gesKm * 100).round().toString();
footPercent = (kmFuss / gesKm * 100).round().toString();
bikePercent = (kmRad / gesKm * 100).round().toString();
totalKm = gesKm.toString();
}
setState(() {});
} catch (e) {
return;
}
}
void onTrackConditionsUpdated() {
try {
double kmGood = double.parse(widget.spGutController.text);
double kmMiddle = double.parse(widget.spMittelController.text);
double kmBad = double.parse(widget.spSchlechtController.text);
double gesKm = (kmGood + kmMiddle + kmBad);
if (gesKm == 0) {
goodPercent = "0";
middlePercent = "0";
badPercent = "0";
} else {
goodPercent = (kmGood / gesKm * 100).round().toString();
middlePercent = (kmMiddle / gesKm * 100).round().toString();
badPercent = (kmBad / gesKm * 100).round().toString();
}
setState(() {});
} catch (e) {
return;
}
}
@override
Widget build(BuildContext context) {
return Column(
@@ -44,7 +121,7 @@ class StreckeUSpurbedingungenState extends State<StreckeUSpurbedingungen> {
controller: widget.kmAutoController,
)),
Expanded(child: Center(child: Text("="))),
Expanded(child: Center(child: Text(""))),
Expanded(child: Center(child: Text(carPercent))),
Expanded(child: Center(child: Text("%"))),
],
),
@@ -56,7 +133,7 @@ class StreckeUSpurbedingungenState extends State<StreckeUSpurbedingungen> {
keyboardType: TextInputType.number,
controller: widget.kmFussController)),
Expanded(child: Center(child: Text("="))),
Expanded(child: Center(child: Text(""))),
Expanded(child: Center(child: Text(footPercent))),
Expanded(child: Center(child: Text("%"))),
],
),
@@ -68,7 +145,7 @@ class StreckeUSpurbedingungenState extends State<StreckeUSpurbedingungen> {
keyboardType: TextInputType.number,
controller: widget.kmRadController)),
Expanded(child: Center(child: Text("="))),
Expanded(child: Center(child: Text(""))),
Expanded(child: Center(child: Text(bikePercent))),
Expanded(child: Center(child: Text("%"))),
],
),
@@ -85,7 +162,7 @@ class StreckeUSpurbedingungenState extends State<StreckeUSpurbedingungen> {
flex: 3,
child: Align(
alignment: Alignment.bottomLeft,
child: Text("data"),
child: Text(totalKm),
),
)
],
@@ -108,7 +185,7 @@ class StreckeUSpurbedingungenState extends State<StreckeUSpurbedingungen> {
keyboardType: TextInputType.number,
controller: widget.spGutController)),
Expanded(child: Center(child: Text("="))),
Expanded(child: Center(child: Text(""))),
Expanded(child: Center(child: Text(goodPercent))),
Expanded(child: Center(child: Text("%"))),
],
),
@@ -120,7 +197,7 @@ class StreckeUSpurbedingungenState extends State<StreckeUSpurbedingungen> {
keyboardType: TextInputType.number,
controller: widget.spMittelController)),
Expanded(child: Center(child: Text("="))),
Expanded(child: Center(child: Text(""))),
Expanded(child: Center(child: Text(middlePercent))),
Expanded(child: Center(child: Text("%"))),
],
),
@@ -133,7 +210,7 @@ class StreckeUSpurbedingungenState extends State<StreckeUSpurbedingungen> {
controller: widget.spSchlechtController,
)),
Expanded(child: Center(child: Text("="))),
Expanded(child: Center(child: Text(""))),
Expanded(child: Center(child: Text(badPercent))),
Expanded(child: Center(child: Text("%"))),
],
),