chore: add build artifacts, map assets, and routing data

This commit is contained in:
Hamza-Ayed
2026-09-19 12:34:24 +03:00
parent aa2b9f131f
commit 43ad2e0ad4
327 changed files with 52421 additions and 1810 deletions
@@ -12,93 +12,74 @@ class ActiveNavigationTopBanner extends StatelessWidget {
final step = navState.currentStep;
if (step == null) return const SizedBox.shrink();
return Positioned(
top: 50,
left: 16,
right: 16,
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14),
decoration: BoxDecoration(
color: const Color(0xF50F172A),
borderRadius: BorderRadius.circular(16),
border: Border.all(color: const Color(0xFF0071E3), width: 1.5),
boxShadow: const [
BoxShadow(color: Colors.black87, blurRadius: 20, offset: Offset(0, 4)),
],
),
child: Row(
children: [
// Maneuver Icon
Container(
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
color: const Color(0xFF0071E3),
borderRadius: BorderRadius.circular(12),
boxShadow: const [
BoxShadow(color: Color(0x660071E3), blurRadius: 8),
],
),
child: Icon(step.icon, color: Colors.white, size: 28),
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14),
decoration: BoxDecoration(
color: const Color(0xF50F172A),
borderRadius: BorderRadius.circular(16),
border: Border.all(color: const Color(0xFF0071E3), width: 1.5),
boxShadow: const [
BoxShadow(color: Colors.black87, blurRadius: 20, offset: Offset(0, 4)),
],
),
child: Row(
children: [
// Maneuver Icon
Container(
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
color: const Color(0xFF0071E3),
borderRadius: BorderRadius.circular(12),
boxShadow: const [
BoxShadow(color: Color(0x660071E3), blurRadius: 8),
],
),
const SizedBox(width: 14),
child: Icon(step.icon, color: Colors.white, size: 28),
),
const SizedBox(width: 14),
// Instruction Text
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
'بعد ${step.distanceMeters.round()} متر',
style: const TextStyle(
color: Color(0xFF38BDF8),
fontSize: 12,
fontWeight: FontWeight.w900,
),
// Instruction Text
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
'بعد ${step.distanceMeters.round()} متر',
style: const TextStyle(
color: Color(0xFF38BDF8),
fontSize: 12,
fontWeight: FontWeight.w900,
),
),
const SizedBox(height: 2),
Text(
step.instructionAr,
style: const TextStyle(
color: Colors.white,
fontSize: 15,
fontWeight: FontWeight.bold,
),
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
if (step.streetName.isNotEmpty) ...[
const SizedBox(height: 2),
Text(
step.instructionAr,
step.streetName,
style: const TextStyle(
color: Colors.white,
fontSize: 13.5,
fontWeight: FontWeight.bold,
color: Color(0xFF94A3B8),
fontSize: 11.5,
fontWeight: FontWeight.w500,
),
maxLines: 2,
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
],
),
],
),
// Speed badge
Container(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6),
decoration: BoxDecoration(
color: const Color(0xFF020617),
borderRadius: BorderRadius.circular(10),
border: Border.all(color: Colors.white12),
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
navState.currentSpeedKmH.round().toString(),
style: const TextStyle(
color: Color(0xFF4ADE80),
fontSize: 16,
fontWeight: FontWeight.w900,
),
),
const Text(
'كم/س',
style: TextStyle(color: Color(0xFF94A3B8), fontSize: 9),
),
],
),
),
],
),
),
],
),
);
}
@@ -121,60 +102,55 @@ class ActiveNavigationBottomHUD extends StatelessWidget {
final hourStr = arrivalTime.hour.toString().padLeft(2, '0');
final minStr = arrivalTime.minute.toString().padLeft(2, '0');
return Positioned(
bottom: 20,
left: 16,
right: 16,
child: Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: const Color(0xF50F172A),
borderRadius: BorderRadius.circular(20),
border: Border.all(color: const Color(0xFF22C55E), width: 1.5),
boxShadow: const [
BoxShadow(color: Colors.black87, blurRadius: 25, offset: Offset(0, 4)),
],
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
// Metrics Row
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
_buildHUDCol('وقت الوصول (ETA)', '$hourStr:$minStr', const Color(0xFF4ADE80)),
Container(width: 1, height: 32, color: Colors.white12),
_buildHUDCol('المسافة المتبقية', '${navState.remainingDistanceKm} كم', Colors.white),
Container(width: 1, height: 32, color: Colors.white12),
_buildHUDCol('الزمن المتبقي', '${navState.remainingDurationMinutes.round()} دقيقة', const Color(0xFF38BDF8)),
],
),
return Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: const Color(0xF50F172A),
borderRadius: BorderRadius.circular(20),
border: Border.all(color: const Color(0xFF22C55E), width: 1.5),
boxShadow: const [
BoxShadow(color: Colors.black87, blurRadius: 25, offset: Offset(0, 4)),
],
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
// Metrics Row
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
_buildHUDCol('وقت الوصول (ETA)', '$hourStr:$minStr', const Color(0xFF4ADE80)),
Container(width: 1, height: 32, color: Colors.white12),
_buildHUDCol('المسافة المتبقية', '${navState.remainingDistanceKm} كم', Colors.white),
Container(width: 1, height: 32, color: Colors.white12),
_buildHUDCol('الزمن المتبقي', '${navState.remainingDurationMinutes.round()} دقيقة', const Color(0xFF38BDF8)),
],
),
const SizedBox(height: 14),
const SizedBox(height: 14),
// Stop Navigation Button
Row(
children: [
Expanded(
child: ElevatedButton.icon(
onPressed: onStopNavigation,
icon: const Icon(Icons.close, size: 18),
label: const Text(
'إنهاء الملاحة الميدانية (Exit Navigation)',
style: TextStyle(fontSize: 12.5, fontWeight: FontWeight.bold),
),
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xFFEF4444),
foregroundColor: Colors.white,
padding: const EdgeInsets.symmetric(vertical: 12),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
),
// Stop Navigation Button
Row(
children: [
Expanded(
child: ElevatedButton.icon(
onPressed: onStopNavigation,
icon: const Icon(Icons.close, size: 18),
label: const Text(
'إنهاء الملاحة الميدانية (Exit Navigation)',
style: TextStyle(fontSize: 12.5, fontWeight: FontWeight.bold),
),
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xFFEF4444),
foregroundColor: Colors.white,
padding: const EdgeInsets.symmetric(vertical: 12),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)),
),
),
],
),
],
),
),
],
),
],
),
);
}