import 'package:flutter/cupertino.dart'; // Widget einer Meilenstein-Timeline basierend auf den übergebenen Meilensteinen und dem gesamten Zinsertrag class MilestoneTimeline extends StatelessWidget { final List> milestones; // Liste der Meilensteine final double totalInterest; // Gesamter Zinsertrag const MilestoneTimeline({ super.key, required this.milestones, required this.totalInterest, }); @override Widget build(BuildContext context) { return SizedBox( child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: List.generate(milestones.length, (index) { double milestoneValue = milestones[index]['value']; // Der Wert des aktuellen Meilensteins String milestoneEmoji = milestones[index]['emoji']; // Das Emoji des aktuellen Meilensteins String milestoneText = milestones[index]['text']; // Der Text des aktuellen Meilensteins bool milestoneReached = totalInterest >= milestoneValue; // Gibt an, ob der Meilenstein erreicht wurde // Widget für den aktuellen Meilenstein return Column( children: [ // Trennlinie zwischen den Meilensteinen, außer für den ersten Meilenstein if (index > 0) Container( height: 25, 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: 30), ), const SizedBox(height: 5), Text( milestoneText, textAlign: TextAlign.center, ), ], ), ), // Widget für das Symbol (Kreis oder Häkchen) je nachdem, ob der Meilenstein erreicht wurde 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, ), ), ], ); }), ), ), ); } }