69 lines
2.6 KiB
Dart
69 lines
2.6 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
|
|
// Widget einer Meilenstein-Timeline basierend auf den übergebenen Meilensteinen und dem gesamten Zinsertrag
|
|
class MilestoneTimeline extends StatelessWidget {
|
|
final List<Map<String, dynamic>> 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,
|
|
),
|
|
),
|
|
],
|
|
);
|
|
}),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|