import 'package:flutter/material.dart'; import 'package:fl_chart/fl_chart.dart'; import '../models/norms.dart'; class CompetenceChart extends StatelessWidget { final List values; final String title; final Color color; const CompetenceChart({ super.key, required this.values, required this.title, required this.color, }); @override Widget build(BuildContext context) { return Card( margin: const EdgeInsets.all(16), child: Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( title, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold), ), const SizedBox(height: 16), SizedBox( height: 250, child: LineChart( LineChartData( gridData: const FlGridData(show: true), titlesData: FlTitlesData( leftTitles: const AxisTitles( sideTitles: SideTitles(showTitles: true), ), bottomTitles: AxisTitles( sideTitles: SideTitles( showTitles: true, getTitlesWidget: (value, meta) { final index = value.toInt(); if (index >= 0 && index < Norms.kompetenzen.length) { return SideTitleWidget( axisSide: meta.axisSide, child: Text( Norms.kompetenzen[index].substring(0, 8), style: const TextStyle(fontSize: 10), ), ); } return Container(); }, ), ), ), borderData: FlBorderData(show: true), lineBarsData: [ LineChartBarData( spots: List.generate( values.length, (i) => FlSpot(i.toDouble(), values[i].toDouble()), ), isCurved: true, color: color, barWidth: 2, dotData: const FlDotData(show: true), belowBarData: BarAreaData(show: false), ), ], minY: 0, maxY: 6, ), ), ), ], ), ), ); } }