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 \n Preis: 700€ ' } ,
{ ' value ' : 3250.0 , ' emoji ' : ' 🚲 ' , ' text ' : ' eBike \n Preis: 3250€ ' } ,
{ ' value ' : 20000.0 , ' emoji ' : ' 🌎 ' , ' text ' : ' Weltreise \n Preis: 20000€ ' } ,
{ ' value ' : 100000.0 , ' emoji ' : ' 🏎️ ' , ' text ' : ' Sportwagen \n Preis: 100000€ ' } ,
{ ' value ' : 350000.0 , ' emoji ' : ' 🏡 ' , ' text ' : ' 150qm Einfamilienhaus \n Preis: 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 ) ,
2024-05-20 16:34:31 +02:00
_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 (
2024-05-20 16:34:31 +02:00
padding: const EdgeInsets . symmetric ( horizontal: 20 ) ,
2024-05-06 17:28:10 +02:00
child: Row (
mainAxisAlignment: MainAxisAlignment . spaceBetween ,
children: [
2024-05-20 16:34:31 +02:00
Flexible (
child: Text (
label ,
textAlign: TextAlign . start ,
style: const TextStyle (
fontWeight: FontWeight . bold ,
) ,
2024-05-06 17:28:10 +02:00
) ,
) ,
2024-05-20 16:34:31 +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
) ,
) ,
] ,
) ,
) ;
}