Files
kulakpos_app/lib/Screens/DashBoard/test_numeric.dart
2026-02-07 15:57:09 +07:00

155 lines
4.2 KiB
Dart

import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
class TestNumericAxisChart extends StatefulWidget {
const TestNumericAxisChart({Key? key}) : super(key: key);
@override
State<TestNumericAxisChart> createState() => _TestNumericAxisChartState();
}
class _TestNumericAxisChartState extends State<TestNumericAxisChart> {
final List<ChartData> chartData = [
ChartData('Sat', 20000, 15000),
ChartData('Sun', 10000, 25000),
ChartData('Mon', 5000, 5000),
ChartData('Tues', 45000, 35000),
ChartData('Wed', 25000, 30000),
ChartData('Thurs', 20000, 10000),
ChartData('Fri', 25000, 20000),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Container(
color: Colors.white,
padding: const EdgeInsets.all(16.0),
child: BarChart(
BarChartData(
alignment: BarChartAlignment.spaceAround,
maxY: 50000,
barTouchData: BarTouchData(enabled: false),
titlesData: FlTitlesData(
show: true,
bottomTitles: AxisTitles(
sideTitles: SideTitles(
showTitles: true,
getTitlesWidget: _getBottomTitles,
reservedSize: 42,
),
),
leftTitles: AxisTitles(
sideTitles: SideTitles(
showTitles: true,
getTitlesWidget: _getLeftTitles,
reservedSize: 42,
),
),
),
borderData: FlBorderData(show: false),
gridData: FlGridData(
show: true,
drawVerticalLine: false,
getDrawingHorizontalLine: (value) {
return const FlLine(
color: Color(0xffD1D5DB),
dashArray: [5, 5],
strokeWidth: 1,
);
},
),
barGroups: _buildBarGroups(),
),
),
),
),
);
}
List<BarChartGroupData> _buildBarGroups() {
return chartData.asMap().entries.map((entry) {
int index = entry.key;
ChartData data = entry.value;
return BarChartGroupData(
x: index,
barRods: [
BarChartRodData(
toY: data.y,
color: Colors.green,
width: 10,
borderRadius: BorderRadius.circular(0),
),
BarChartRodData(
toY: data.y1,
color: Colors.red,
width: 10,
borderRadius: BorderRadius.circular(0),
),
],
barsSpace: 10,
);
}).toList();
}
Widget _getBottomTitles(double value, TitleMeta meta) {
final style = const TextStyle(
color: Colors.black,
fontWeight: FontWeight.normal,
fontSize: 12,
);
String text = chartData[value.toInt()].x;
return SideTitleWidget(
meta: TitleMeta(
min: meta.min,
max: meta.max,
parentAxisSize: meta.parentAxisSize,
axisPosition: meta.axisPosition,
appliedInterval: meta.appliedInterval,
sideTitles: meta.sideTitles,
formattedValue: meta.formattedValue,
axisSide: meta.axisSide,
rotationQuarterTurns: meta.rotationQuarterTurns,
),
space: 8,
child: Text(text, style: style),
);
}
Widget _getLeftTitles(double value, TitleMeta meta) {
return SideTitleWidget(
meta: TitleMeta(
min: meta.min,
max: meta.max,
parentAxisSize: meta.parentAxisSize,
axisPosition: meta.axisPosition,
appliedInterval: meta.appliedInterval,
sideTitles: meta.sideTitles,
formattedValue: meta.formattedValue,
axisSide: meta.axisSide,
rotationQuarterTurns: meta.rotationQuarterTurns,
),
child: Text(
value.toInt().toString(),
style: const TextStyle(
color: Colors.black,
fontWeight: FontWeight.normal,
fontSize: 12,
),
),
);
}
}
class ChartData {
ChartData(this.x, this.y, this.y1);
final String x;
final double y;
final double y1;
}