flutter_application_1/lib/widgets/milestone_timeline_widget.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,
),
),
],
);
}),
),
),
);
}
}