import 'package:flutter/cupertino.dart'; import 'package:flutter_application_1/enums.dart'; import 'package:flutter_application_1/translations.dart'; import 'package:flutter_application_1/widgets/expandable_widget.dart'; import 'package:flutter_application_1/widgets/chart_widget.dart'; // Erstellt das Widget für das Ergebnis der Berechnungen Widget buildResultWidget(String compoundInterest, String investedMoney, String time, String monthlySavingsRate, String interestRate, PayoutInterval payoutInterval, List investedMoneyList, List compoundInterestList) { // Liste von Meilensteinen mit Werten, Bildern und Texten. List> milestoneList = [ {'value': 1329.0, 'emoji': '📱', 'text': 'iPhone 15 Pro Max\nPreis: 1329€'}, {'value': 3071.0, 'emoji': '🚲', 'text': 'Flyer Gotour6 3.40\nPreis: 3071€'}, {'value': 248157.0, 'emoji': '🏎️', 'text': 'Porsche 992 GT3 RS\nPreis: 248157€'}, {'value': 450000.0, 'emoji': '🏡', 'text': '150qm Einfamilienhaus\nPreis: ca. 450000€'}, ]; return Column( children: [ _buildResultRow('Endkapital:', '$compoundInterest€'), _buildResultRow('Einzahlungen:', '$investedMoney€'), _buildResultRow('Erhaltene Zinsen:', '${double.parse(compoundInterest) - double.parse(investedMoney)}€'), const SizedBox(height: 20), 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.' ), const SizedBox(height: 20), ExpandableBox( headerText: 'Grafik', expandedContent: StackedColumnChart( lowerValues: investedMoneyList, upperValues: compoundInterestList, ), ), const SizedBox(height: 5), ExpandableBox( headerText: 'Meilensteine', expandedContent: buildMilestoneTimeline(milestoneList, double.parse(compoundInterest) - double.parse(investedMoney)), ), ], ); } Widget _buildResultRow(String label, String value) { return Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Flexible( child: Text( label, textAlign: TextAlign.start, style: const TextStyle( fontWeight: FontWeight.bold, ), ), ), const SizedBox(width: 20), Flexible( child: Text( value, textAlign: TextAlign.end, style: const TextStyle( fontWeight: FontWeight.bold, ), ), ), ], ), ); } // Erstellt die Meilenstein-Timeline. Widget buildMilestoneTimeline(List> milestones, double totalInterest) { return SizedBox( child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: List.generate(milestones.length, (index) { // Werte aus dem Meilenstein-Objekt extrahieren double milestoneValue = milestones[index]['value']; String milestoneEmoji = milestones[index]['emoji']; String milestoneText = milestones[index]['text']; bool milestoneReached = totalInterest >= milestoneValue; return Column( children: [ if (index > 0) // Zeigt eine vertikale Linie an zwischen den Meilensteinen Container( height: 50, width: 2, color: milestoneReached ? CupertinoColors.systemGreen : CupertinoColors.black, ), Padding( padding: const EdgeInsets.symmetric(vertical: 4.0), child: Column( children: [ Text( milestoneEmoji, style: const TextStyle(fontSize: 25), ), const SizedBox(height: 5), Text( milestoneText, textAlign: TextAlign.center, style: const TextStyle( fontWeight: FontWeight.bold, ), ), ], ), ), // Zeigt ein Häkchen oder einen Kreis je nach Erreichen des Meilensteins an Padding( padding: const EdgeInsets.symmetric(vertical: 4.0), child: Icon( milestoneReached ? CupertinoIcons.check_mark_circled_solid : CupertinoIcons.circle_fill, size: 20, color: milestoneReached ? CupertinoColors.systemGreen : CupertinoColors.black, ), ), ], ); }), ), ), ); }