Files
fl_chart/example/lib/presentation/samples/line/line_chart_sample7.dart
zypherift c7e3f36b06
Some checks failed
Code Coverage / upload (push) Has been cancelled
Gh-Pages / build (push) Has been cancelled
Code Verification / verify (push) Has been cancelled
1.0.0
2025-08-09 18:17:34 +02:00

194 lines
4.9 KiB
Dart

import 'package:fl_chart/fl_chart.dart';
import 'package:fl_chart_app/presentation/resources/app_resources.dart';
import 'package:flutter/material.dart';
class LineChartSample7 extends StatelessWidget {
LineChartSample7({
super.key,
Color? line1Color,
Color? line2Color,
Color? betweenColor,
}) : line1Color = line1Color ?? AppColors.contentColorGreen,
line2Color = line2Color ?? AppColors.contentColorRed,
betweenColor =
betweenColor ?? AppColors.contentColorRed.withValues(alpha: 0.5);
final Color line1Color;
final Color line2Color;
final Color betweenColor;
Widget bottomTitleWidgets(double value, TitleMeta meta) {
const style = TextStyle(
fontSize: 10,
fontWeight: FontWeight.bold,
);
String text;
switch (value.toInt()) {
case 0:
text = 'Jan';
break;
case 1:
text = 'Feb';
break;
case 2:
text = 'Mar';
break;
case 3:
text = 'Apr';
break;
case 4:
text = 'May';
break;
case 5:
text = 'Jun';
break;
case 6:
text = 'Jul';
break;
case 7:
text = 'Aug';
break;
case 8:
text = 'Sep';
break;
case 9:
text = 'Oct';
break;
case 10:
text = 'Nov';
break;
case 11:
text = 'Dec';
break;
default:
return Container();
}
return SideTitleWidget(
meta: meta,
space: 4,
child: Text(text, style: style),
);
}
Widget leftTitleWidgets(double value, TitleMeta meta) {
const style = TextStyle(fontSize: 10);
return SideTitleWidget(
meta: meta,
child: Text(
'\$ ${value + 0.5}',
style: style,
),
);
}
@override
Widget build(BuildContext context) {
return AspectRatio(
aspectRatio: 2,
child: Padding(
padding: const EdgeInsets.only(
left: 10,
right: 18,
top: 10,
bottom: 4,
),
child: LineChart(
LineChartData(
lineTouchData: const LineTouchData(enabled: false),
lineBarsData: [
LineChartBarData(
spots: const [
FlSpot(0, 4),
FlSpot(1, 3.5),
FlSpot(2, 4.5),
FlSpot(3, 1),
FlSpot(4, 4),
FlSpot(5, 6),
FlSpot(6, 6.5),
FlSpot(7, 6),
FlSpot(8, 4),
FlSpot(9, 6),
FlSpot(10, 6),
FlSpot(11, 7),
],
isCurved: true,
barWidth: 2,
color: line1Color,
dotData: const FlDotData(
show: false,
),
),
LineChartBarData(
spots: const [
FlSpot(0, 7),
FlSpot(1, 3),
FlSpot(2, 4),
FlSpot(3, 2),
FlSpot(4, 3),
FlSpot(5, 4),
FlSpot(6, 5),
FlSpot(7, 3),
FlSpot(8, 1),
FlSpot(9, 8),
FlSpot(10, 1),
FlSpot(11, 3),
],
isCurved: false,
barWidth: 2,
color: line2Color,
dotData: const FlDotData(
show: false,
),
),
],
betweenBarsData: [
BetweenBarsData(
fromIndex: 0,
toIndex: 1,
color: betweenColor,
)
],
minY: 0,
borderData: FlBorderData(
show: false,
),
titlesData: FlTitlesData(
bottomTitles: AxisTitles(
sideTitles: SideTitles(
showTitles: true,
interval: 1,
getTitlesWidget: bottomTitleWidgets,
),
),
leftTitles: AxisTitles(
sideTitles: SideTitles(
showTitles: true,
getTitlesWidget: leftTitleWidgets,
interval: 1,
reservedSize: 36,
),
),
topTitles: const AxisTitles(
sideTitles: SideTitles(showTitles: false),
),
rightTitles: const AxisTitles(
sideTitles: SideTitles(showTitles: false),
),
),
gridData: FlGridData(
show: true,
drawVerticalLine: false,
horizontalInterval: 1,
checkToShowHorizontalLine: (double value) {
return value == 1 || value == 6 || value == 4 || value == 5;
},
),
),
),
),
);
}
}