إصلاح أخطاء شاشة الكباتن من تحديث الذكاء الاصطناعي

This commit is contained in:
Hamza-Ayed
2026-07-26 12:18:23 +03:00
parent 16feb51a75
commit 4b5235c35c
16 changed files with 72976 additions and 72556 deletions
@@ -1,5 +1,6 @@
import 'dart:math';
import 'package:fl_chart/fl_chart.dart';
import 'package:flutter/material.dart';
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
import 'package:get/get.dart';
@@ -493,6 +494,7 @@ class _AdminHomePageState extends State<AdminHomePage>
),
),
),
_buildChartsSection(data, controller, cs),
const SizedBox(height: 8),
],
),
@@ -500,6 +502,206 @@ class _AdminHomePageState extends State<AdminHomePage>
);
}
Widget _buildChartsSection(
dynamic data, DashboardController controller, ColorScheme cs) {
final completed = (data['completed_rides'] ?? 0).toDouble();
final cancelled = (data['cancelled_rides'] ?? 0).toDouble();
final total = completed + cancelled;
final completedPercent = total > 0 ? (completed / total * 100).toStringAsFixed(1) : '0.0';
final comfort = (data['comfort'] ?? 0).toDouble();
final speed = (data['speed'] ?? 0).toDouble();
final lady = (data['lady'] ?? 0).toDouble();
final maxBar = [comfort, speed, lady].reduce((a, b) => a > b ? a : b);
final barMaxY = maxBar > 0 ? (maxBar * 1.3).ceilToDouble() : 10.0;
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(4, 0, 4, 10),
child: Row(
children: [
Container(
width: 3,
height: 14,
decoration: BoxDecoration(
color: cs.primary,
borderRadius: BorderRadius.circular(2),
),
),
const SizedBox(width: 8),
Text('تحليل البيانات',
style: TextStyle(
color: cs.onSurfaceVariant,
fontSize: 11,
fontWeight: FontWeight.w600,
letterSpacing: 1.2,
)),
],
),
),
Container(
decoration: BoxDecoration(
color: cs.surfaceContainerHighest,
borderRadius: BorderRadius.circular(16),
border: Border.all(color: cs.outline),
),
padding: const EdgeInsets.all(16),
child: Row(
children: [
Expanded(
child: SizedBox(
height: 200,
child: Stack(
alignment: Alignment.center,
children: [
PieChart(
PieChartData(
sectionsSpace: 2,
centerSpaceRadius: 35,
sections: [
PieChartSectionData(
value: completed,
color: cs.primary,
radius: 55,
title: '',
),
PieChartSectionData(
value: cancelled,
color: cs.error,
radius: 55,
title: '',
),
],
),
),
Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'$completedPercent%',
style: TextStyle(
color: cs.onSurface,
fontSize: 16,
fontWeight: FontWeight.bold,
),
),
Text(
total.toInt().toString(),
style: TextStyle(
color: cs.onSurfaceVariant,
fontSize: 10,
),
),
],
),
],
),
),
),
const SizedBox(width: 8),
Expanded(
child: SizedBox(
height: 200,
child: BarChart(
BarChartData(
alignment: BarChartAlignment.spaceAround,
maxY: barMaxY,
barTouchData: BarTouchData(
touchTooltipData: BarTouchTooltipData(
getTooltipColor: (_) => cs.surfaceContainerHighest,
getTooltipItem: (group, groupIndex, rod, rodIndex) {
return BarTooltipItem(
rod.toY.toInt().toString(),
TextStyle(
color: cs.onSurface,
fontSize: 11,
fontWeight: FontWeight.w600,
),
);
},
),
),
titlesData: FlTitlesData(
show: true,
topTitles: const AxisTitles(sideTitles: SideTitles(showTitles: false)),
leftTitles: const AxisTitles(sideTitles: SideTitles(showTitles: false)),
rightTitles: const AxisTitles(sideTitles: SideTitles(showTitles: false)),
bottomTitles: AxisTitles(
sideTitles: SideTitles(
showTitles: true,
reservedSize: 30,
getTitlesWidget: (value, meta) {
final labels = ['Comfort', 'Speed', 'Lady'];
if (value.toInt() < labels.length) {
return Padding(
padding: const EdgeInsets.only(top: 6),
child: Text(
labels[value.toInt()],
style: TextStyle(
color: cs.onSurfaceVariant,
fontSize: 10,
),
),
);
}
return const SizedBox.shrink();
},
),
),
),
gridData: const FlGridData(show: false),
borderData: FlBorderData(show: false),
barGroups: [
BarChartGroupData(
x: 0,
barRods: [
BarChartRodData(
toY: comfort,
color: cs.tertiary,
width: 28,
borderRadius: const BorderRadius.vertical(top: Radius.circular(6)),
),
],
),
BarChartGroupData(
x: 1,
barRods: [
BarChartRodData(
toY: speed,
color: const Color(0xFFF59E0B),
width: 28,
borderRadius: const BorderRadius.vertical(top: Radius.circular(6)),
),
],
),
BarChartGroupData(
x: 2,
barRods: [
BarChartRodData(
toY: lady,
color: const Color(0xFFF48FB1),
width: 28,
borderRadius: const BorderRadius.vertical(top: Radius.circular(6)),
),
],
),
],
),
),
),
),
],
),
),
],
),
);
}
Widget _buildHighlightCard(_HighlightData h, ColorScheme cs) {
return GlassContainer(
width: 155,