diff --git a/lib/screens/Excursion/widgets/strecke_u_spurbedingungen.dart b/lib/screens/Excursion/widgets/strecke_u_spurbedingungen.dart index 70566c7..49d744f 100644 --- a/lib/screens/Excursion/widgets/strecke_u_spurbedingungen.dart +++ b/lib/screens/Excursion/widgets/strecke_u_spurbedingungen.dart @@ -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 { + // 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 { 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 { 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 { 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 { flex: 3, child: Align( alignment: Alignment.bottomLeft, - child: Text("data"), + child: Text(totalKm), ), ) ], @@ -108,7 +185,7 @@ class StreckeUSpurbedingungenState extends State { 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 { 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 { controller: widget.spSchlechtController, )), Expanded(child: Center(child: Text("="))), - Expanded(child: Center(child: Text(""))), + Expanded(child: Center(child: Text(badPercent))), Expanded(child: Center(child: Text("%"))), ], ),