flutter_application_1/lib/widgets/result_widget.dart

106 lines
4.1 KiB
Dart
Raw Normal View History

2024-05-06 17:28:10 +02:00
import 'package:flutter/cupertino.dart';
2024-05-24 14:04:26 +02:00
import 'package:flutter/material.dart';
2024-05-06 17:28:10 +02:00
import 'package:flutter_application_1/enums.dart';
import 'package:flutter_application_1/translations.dart';
2024-05-24 14:04:26 +02:00
import 'package:flutter_application_1/widgets/second_page_widget.dart';
import 'package:flutter_application_1/widgets/custom_image_button_widget.dart';
2024-05-06 17:28:10 +02:00
import 'package:flutter_application_1/widgets/chart_widget.dart';
2024-05-24 14:04:26 +02:00
import 'package:flutter_application_1/widgets/milestone_timeline_widget.dart';
2024-05-06 17:28:10 +02:00
2024-05-24 14:04:26 +02:00
// Erstellt ein Widget, das die Berechnungsergebnisse anzeigt
Widget buildResultWidget(BuildContext context, String compoundInterest, String investedMoney, String time, String monthlySavingsRate, String interestRate, PayoutInterval payoutInterval, List<double> investedMoneyList, List<double> compoundInterestList) {
// Liste von Meilensteinen mit Werten, Emojis und Beschreibungen
2024-05-06 17:28:10 +02:00
List<Map<String, dynamic>> milestoneList = [
2024-05-24 14:04:26 +02:00
{'value': 700.0, 'emoji': '📱', 'text': 'Smartphone\nPreis: 700€'},
{'value': 3250.0, 'emoji': '🚲', 'text': 'eBike\nPreis: 3250€'},
{'value': 20000.0, 'emoji': '🌎', 'text': 'Weltreise\nPreis: 20000€'},
{'value': 100000.0, 'emoji': '🏎️', 'text': 'Sportwagen\nPreis: 100000€'},
{'value': 350000.0, 'emoji': '🏡', 'text': '150qm Einfamilienhaus\nPreis: 350000€'},
2024-05-06 17:28:10 +02:00
];
2024-05-24 14:04:26 +02:00
2024-05-06 17:28:10 +02:00
return Column(
children: <Widget>[
2024-05-24 14:04:26 +02:00
CustomImageButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondPage(
title: 'Grafik',
widgetToShow: StackedColumnChart(
lowerValues: investedMoneyList,
upperValues: compoundInterestList,
)
),
),
);
},
backgroundImage: 'assets/images/button_bg1.jpg',
child: const Text(
'Grafik',
style: TextStyle(color: CupertinoColors.white, fontSize: 20),
),
),
const SizedBox(height: 20),
CustomImageButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SecondPage(
title: 'Meilensteine',
widgetToShow: buildMilestoneTimeline(milestoneList, double.parse(compoundInterest) - double.parse(investedMoney))
),
),
);
},
backgroundImage: 'assets/images/button_bg2.jpg',
child: const Text(
'Meilensteine',
style: TextStyle(color: CupertinoColors.white, fontSize: 20),
),
),
const SizedBox(height: 20),
_buildResultRow('Endkapital:', '$compoundInterest'),
_buildResultRow('Einzahlungen:', '$investedMoney'),
_buildResultRow('Erhaltene Zinsen:', '${double.parse(compoundInterest) - double.parse(investedMoney)}'),
2024-05-24 14:04:26 +02:00
const SizedBox(height: 10),
2024-05-06 17:28:10 +02:00
Text(
'Wenn du über einen Zeitraum von $time Jahren ${translateInterval(payoutInterval)} $monthlySavingsRate€ mit einem Zinssatz von $interestRate% investierst, erreichst du am Ende ein Endkapital von $compoundInterest€. Dieses setzt sich aus Einzahlungen von $investedMoney€ und Zinsen bzw. Kapitalerträgen in Höhe von ${double.parse(compoundInterest) - double.parse(investedMoney)}€ zusammen.'
),
],
);
2024-05-24 14:04:26 +02:00
2024-05-06 17:28:10 +02:00
}
2024-05-24 14:04:26 +02:00
// Erstellt eine Zeile mit einem Label und einem Wert
2024-05-06 17:28:10 +02:00
Widget _buildResultRow(String label, String value) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
2024-05-06 17:28:10 +02:00
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Flexible(
child: Text(
label,
textAlign: TextAlign.start,
style: const TextStyle(
fontWeight: FontWeight.bold,
),
2024-05-06 17:28:10 +02:00
),
),
const SizedBox(width: 20),
Flexible(
child: Text(
value,
textAlign: TextAlign.end,
style: const TextStyle(
fontWeight: FontWeight.bold,
),
2024-05-06 17:28:10 +02:00
),
),
],
),
);
}