outsourced all methods and dialogs as far as possible (I think)
This commit is contained in:
220
lib/screens/excursion/widgets/strecke_u_spurbedingungen.dart
Normal file
220
lib/screens/excursion/widgets/strecke_u_spurbedingungen.dart
Normal file
@@ -0,0 +1,220 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
class StreckeUSpurbedingungen extends StatefulWidget {
|
||||
final TextEditingController kmAutoController;
|
||||
final TextEditingController kmFussController;
|
||||
final TextEditingController kmRadController;
|
||||
final TextEditingController spGutController;
|
||||
final TextEditingController spMittelController;
|
||||
final TextEditingController spSchlechtController;
|
||||
|
||||
const StreckeUSpurbedingungen(
|
||||
{required this.kmAutoController,
|
||||
required this.kmFussController,
|
||||
required this.kmRadController,
|
||||
required this.spGutController,
|
||||
required this.spMittelController,
|
||||
required this.spSchlechtController,
|
||||
super.key});
|
||||
|
||||
@override
|
||||
StreckeUSpurbedingungenState createState() => StreckeUSpurbedingungenState();
|
||||
}
|
||||
|
||||
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(
|
||||
children: [
|
||||
Align(
|
||||
alignment: Alignment.bottomLeft,
|
||||
child: Text(
|
||||
AppLocalizations.of(context)!.zurueckgelegteStrecke,
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
)),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(child: Text(AppLocalizations.of(context)!.auto)),
|
||||
Expanded(
|
||||
child: TextField(
|
||||
keyboardType: TextInputType.number,
|
||||
controller: widget.kmAutoController,
|
||||
)),
|
||||
Expanded(child: Center(child: Text("="))),
|
||||
Expanded(child: Center(child: Text(carPercent))),
|
||||
Expanded(child: Center(child: Text("%"))),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(child: Text(AppLocalizations.of(context)!.zuFuss)),
|
||||
Expanded(
|
||||
child: TextField(
|
||||
keyboardType: TextInputType.number,
|
||||
controller: widget.kmFussController)),
|
||||
Expanded(child: Center(child: Text("="))),
|
||||
Expanded(child: Center(child: Text(footPercent))),
|
||||
Expanded(child: Center(child: Text("%"))),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(child: Text(AppLocalizations.of(context)!.fahrrad)),
|
||||
Expanded(
|
||||
child: TextField(
|
||||
keyboardType: TextInputType.number,
|
||||
controller: widget.kmRadController)),
|
||||
Expanded(child: Center(child: Text("="))),
|
||||
Expanded(child: Center(child: Text(bikePercent))),
|
||||
Expanded(child: Center(child: Text("%"))),
|
||||
],
|
||||
),
|
||||
const SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: Text(AppLocalizations.of(context)!.gesamt),
|
||||
),
|
||||
Expanded(
|
||||
flex: 3,
|
||||
child: Align(
|
||||
alignment: Alignment.bottomLeft,
|
||||
child: Text(totalKm),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
const SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Align(
|
||||
alignment: Alignment.bottomLeft,
|
||||
child: Text(
|
||||
AppLocalizations.of(context)!.spurbedingungen,
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
),
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(child: Text(AppLocalizations.of(context)!.gut)),
|
||||
Expanded(
|
||||
child: TextField(
|
||||
keyboardType: TextInputType.number,
|
||||
controller: widget.spGutController)),
|
||||
Expanded(child: Center(child: Text("="))),
|
||||
Expanded(child: Center(child: Text(goodPercent))),
|
||||
Expanded(child: Center(child: Text("%"))),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(child: Text(AppLocalizations.of(context)!.mittel)),
|
||||
Expanded(
|
||||
child: TextField(
|
||||
keyboardType: TextInputType.number,
|
||||
controller: widget.spMittelController)),
|
||||
Expanded(child: Center(child: Text("="))),
|
||||
Expanded(child: Center(child: Text(middlePercent))),
|
||||
Expanded(child: Center(child: Text("%"))),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(child: Text(AppLocalizations.of(context)!.schlecht)),
|
||||
Expanded(
|
||||
child: TextField(
|
||||
keyboardType: TextInputType.number,
|
||||
controller: widget.spSchlechtController,
|
||||
)),
|
||||
Expanded(child: Center(child: Text("="))),
|
||||
Expanded(child: Center(child: Text(badPercent))),
|
||||
Expanded(child: Center(child: Text("%"))),
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user