Update: 2026-08-03 12:30:24

This commit is contained in:
Hamza-Ayed
2026-08-03 12:30:25 +03:00
parent ec467b01c6
commit f36b30f0b8
14 changed files with 66 additions and 32 deletions
+25 -13
View File
@@ -666,29 +666,42 @@ class _AdminHomePageState extends State<AdminHomePage>
);
}
/// تحويل آمن لأي قيمة رقمية قادمة من الـ API.
///
/// حقول MySQL من نوع DECIMAL/SUM تصل نصاً في JSON (مثل "0.00")، بينما
/// حقول COUNT تصل أعداداً صحيحة. الكتابة السابقة
/// `(data['x'] ?? 0).toDouble()` كانت تنهار بـ
/// "Class 'String' has no instance method 'toDouble'" فور وصول أول حقل
/// نصّي — وهو ما حدث عندما نجح تسجيل دخول المحفظة وأرجع payments: "0.00".
double _num(dynamic v) {
if (v == null) return 0;
if (v is num) return v.toDouble();
return double.tryParse(v.toString()) ?? 0;
}
Widget _buildChartsSection(
dynamic data, DashboardController controller, ColorScheme cs) {
final completed = (data['completed_rides'] ?? 0).toDouble();
final cancelled = (data['cancelled_rides'] ?? 0).toDouble();
final completed = _num(data['completed_rides']);
final cancelled = _num(data['cancelled_rides']);
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 comfort = _num(data['comfort']);
final speed = _num(data['speed']);
final lady = _num(data['lady']);
final maxBar = [comfort, speed, lady].reduce((a, b) => a > b ? a : b);
final barMaxY = maxBar > 0 ? (maxBar * 1.3).ceilToDouble() : 10.0;
final payments = (data['payments'] ?? 0).toDouble();
final passengerCount = (data['countPassengers'] ?? 0).toDouble();
final driverCount = (data['countDriver'] ?? 0).toDouble();
final monthRides = (data['countRideThisMonth'] ?? 0).toDouble();
final payments = _num(data['payments']);
final passengerCount = _num(data['countPassengers']);
final driverCount = _num(data['countDriver']);
final monthRides = _num(data['countRideThisMonth']);
// توزيع الرحلات على أوقات اليوم — تعيده dashbord.php منذ البداية
// (morning/evening/night_ride_count) ولم يكن معروضاً في أي شاشة.
final morningRides = (data['morning_ride_count'] ?? 0).toDouble();
final eveningRides = (data['evening_ride_count'] ?? 0).toDouble();
final nightRides = (data['night_ride_count'] ?? 0).toDouble();
final morningRides = _num(data['morning_ride_count']);
final eveningRides = _num(data['evening_ride_count']);
final nightRides = _num(data['night_ride_count']);
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
@@ -1660,7 +1673,6 @@ class _GlowOrb extends StatelessWidget {
@override
Widget build(BuildContext context) {
final cs = Theme.of(context).colorScheme;
return Container(
width: size,
height: size,
@@ -246,7 +246,10 @@ class _RidesDashboardScreenState extends State<RidesDashboardScreen>
SliverAppBar(
pinned: true,
floating: false,
expandedHeight: 268.0,
// 268 كان أقصر بـ 7 بكسل من محتوى الرأس فيفيض عمودياً
// (رُصد على macOS بعرض 1512). المحتوى: العنوان 35 + البطاقات
// 114 + فاصل 14 + شريط البحث 50 + مساحة الـ TabBar 62 = 275.
expandedHeight: 275.0,
backgroundColor: cs.surface,
surfaceTintColor: Colors.transparent,
elevation: 0,
+7 -7
View File
@@ -892,10 +892,10 @@ packages:
dependency: transitive
description:
name: matcher
sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6"
url: "https://pub.dev"
source: hosted
version: "0.12.19"
version: "0.12.18"
material_color_utilities:
dependency: transitive
description:
@@ -908,10 +908,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349"
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.17.0"
mgrs_dart:
dependency: transitive
description:
@@ -1232,10 +1232,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e"
sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636"
url: "https://pub.dev"
source: hosted
version: "0.7.11"
version: "0.7.9"
typed_data:
dependency: transitive
description:
@@ -1413,5 +1413,5 @@ packages:
source: hosted
version: "3.1.3"
sdks:
dart: ">=3.10.0-0 <4.0.0"
dart: ">=3.9.0-0 <4.0.0"
flutter: ">=3.32.0"