Update: 2026-08-02 22:51:18
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import 'package:fl_chart/fl_chart.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:siro_admin/constant/theme.dart';
|
||||
import 'package:siro_admin/controller/admin/analytics_v2_controller.dart';
|
||||
|
||||
class AdvancedAnalyticsPage extends StatelessWidget {
|
||||
@@ -17,6 +18,9 @@ class AdvancedAnalyticsPage extends StatelessWidget {
|
||||
_buildAppBar(context, cs),
|
||||
Expanded(
|
||||
child: GetBuilder<AnalyticsV2Controller>(
|
||||
init: Get.isRegistered<AnalyticsV2Controller>()
|
||||
? Get.find<AnalyticsV2Controller>()
|
||||
: AnalyticsV2Controller(),
|
||||
builder: (ctrl) {
|
||||
if (ctrl.isLoading) {
|
||||
return _buildLoadingState(cs);
|
||||
@@ -178,7 +182,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
|
||||
_buildSummaryCard(
|
||||
'صافي الربح',
|
||||
'${summary['total_profit_all'] ?? 0}',
|
||||
const Color(0xFF10B981),
|
||||
cs.success,
|
||||
Icons.trending_up_rounded,
|
||||
cs,
|
||||
),
|
||||
@@ -285,7 +289,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
|
||||
children: [
|
||||
_LegendDot(color: cs.tertiary, label: 'الإيرادات'),
|
||||
const SizedBox(width: 16),
|
||||
_LegendDot(color: const Color(0xFF10B981), label: 'الربح'),
|
||||
_LegendDot(color: cs.success, label: 'الربح'),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
@@ -356,13 +360,13 @@ class AdvancedAnalyticsPage extends StatelessWidget {
|
||||
LineChartBarData(
|
||||
spots: profitSpots,
|
||||
isCurved: true,
|
||||
color: const Color(0xFF10B981),
|
||||
color: cs.success,
|
||||
barWidth: 3,
|
||||
isStrokeCapRound: true,
|
||||
dotData: const FlDotData(show: false),
|
||||
belowBarData: BarAreaData(
|
||||
show: true,
|
||||
color: const Color(0xFF10B981).withValues(alpha: 0.08),
|
||||
color: cs.success.withValues(alpha: 0.08),
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -418,7 +422,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
|
||||
),
|
||||
BarChartRodData(
|
||||
toY: dCount,
|
||||
color: const Color(0xFFF59E0B).withValues(alpha: 0.7),
|
||||
color: cs.warning.withValues(alpha: 0.7),
|
||||
width: 8,
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
),
|
||||
@@ -450,7 +454,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
|
||||
_LegendDot(color: cs.tertiary, label: 'ركاب جدد'),
|
||||
const SizedBox(width: 16),
|
||||
_LegendDot(
|
||||
color: const Color(0xFFF59E0B), label: 'سائقين جدد'),
|
||||
color: cs.warning, label: 'سائقين جدد'),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
@@ -532,7 +536,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
|
||||
final d = drivers[i];
|
||||
final isTop3 = i < 3;
|
||||
final rankColors = [
|
||||
const Color(0xFFF59E0B),
|
||||
cs.warning,
|
||||
cs.onSurfaceVariant,
|
||||
const Color(0xFFCD7F32),
|
||||
];
|
||||
@@ -624,7 +628,7 @@ class AdvancedAnalyticsPage extends StatelessWidget {
|
||||
Text(
|
||||
'${d['total_revenue']} ل.س',
|
||||
style: TextStyle(
|
||||
color: const Color(0xFF10B981),
|
||||
color: cs.success,
|
||||
fontSize: 11,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:siro_admin/constant/theme.dart';
|
||||
import 'package:fl_chart/fl_chart.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
|
||||
@@ -62,7 +63,7 @@ class StaticDash extends StatelessWidget {
|
||||
spots: c.chartDataDrivers,
|
||||
compareSpots:
|
||||
c.isComparing ? c.chartDataDriversCompare : null,
|
||||
color: const Color(0xFFF59E0B),
|
||||
color: cs.warning,
|
||||
icon: Icons.drive_eta_rounded,
|
||||
controller: c,
|
||||
cs: cs,
|
||||
@@ -146,7 +147,7 @@ class StaticDash extends StatelessWidget {
|
||||
compareSpots: c.isComparing
|
||||
? c.chartDataDriversMatchingNotesCompare
|
||||
: null,
|
||||
color: const Color(0xFF10B981),
|
||||
color: cs.success,
|
||||
icon: Icons.phone_in_talk_rounded,
|
||||
controller: c,
|
||||
cs: cs,
|
||||
@@ -354,7 +355,7 @@ class _KpiRow extends StatelessWidget {
|
||||
_KpiItem('الركاب', controller.totalMonthlyPassengers,
|
||||
Icons.groups_rounded, cs.tertiary),
|
||||
_KpiItem('السائقون', controller.totalMonthlyDrivers,
|
||||
Icons.drive_eta_rounded, const Color(0xFFF59E0B)),
|
||||
Icons.drive_eta_rounded, cs.warning),
|
||||
_KpiItem(
|
||||
'الرحلات', controller.totalMonthlyRides, Icons.map_rounded, cs.primary),
|
||||
];
|
||||
@@ -822,13 +823,13 @@ class _EmployeeLeaderboard extends StatelessWidget {
|
||||
Container(
|
||||
padding: const EdgeInsets.all(8),
|
||||
decoration: BoxDecoration(
|
||||
color: const Color(0xFFF59E0B).withValues(alpha: 0.12),
|
||||
color: cs.warning.withValues(alpha: 0.12),
|
||||
borderRadius: BorderRadius.circular(9),
|
||||
border: Border.all(
|
||||
color: const Color(0xFFF59E0B).withValues(alpha: 0.25)),
|
||||
color: cs.warning.withValues(alpha: 0.25)),
|
||||
),
|
||||
child: const Icon(Icons.emoji_events_rounded,
|
||||
color: Color(0xFFF59E0B), size: 16),
|
||||
child: Icon(Icons.emoji_events_rounded,
|
||||
color: cs.warning, size: 16),
|
||||
),
|
||||
const SizedBox(width: 10),
|
||||
Column(
|
||||
@@ -930,7 +931,7 @@ class _RankBadge extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
final isTop3 = rank <= 3;
|
||||
final medalColors = [
|
||||
const Color(0xFFF59E0B),
|
||||
cs.warning,
|
||||
cs.onSurfaceVariant,
|
||||
const Color(0xFFCD7F32)
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user