149 lines
5.5 KiB
Dart
149 lines
5.5 KiB
Dart
import 'package:Intaleq/constant/box_name.dart';
|
|
import 'package:Intaleq/controller/firebase/firbase_messge.dart';
|
|
import 'package:Intaleq/controller/firebase/notification_service.dart';
|
|
import 'package:Intaleq/main.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_font_icons/flutter_font_icons.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
|
import 'dart:ui'; // مهم لإضافة تأثير الضبابية
|
|
|
|
import '../../../constant/colors.dart';
|
|
import '../../../controller/functions/encrypt_decrypt.dart';
|
|
import '../../../controller/functions/tts.dart';
|
|
import '../../../controller/home/map_passenger_controller.dart';
|
|
import '../../../controller/home/vip_waitting_page.dart';
|
|
import '../../../env/env.dart';
|
|
import '../../../print.dart';
|
|
|
|
// --- الدالة الرئيسية بالتصميم الجديد ---
|
|
GetBuilder<MapPassengerController> leftMainMenuIcons() {
|
|
Get.put(TextToSpeechController());
|
|
return GetBuilder<MapPassengerController>(
|
|
builder: (controller) => Positioned(
|
|
// تم تعديل الموضع ليتناسب مع التصميم الجديد
|
|
top: Get.height * .01,
|
|
left: 0,
|
|
right: 0,
|
|
child: Center(
|
|
child: ClipRRect(
|
|
borderRadius: BorderRadius.circular(50.0), // لإنشاء شكل الكبسولة
|
|
child: BackdropFilter(
|
|
filter: ImageFilter.blur(
|
|
sigmaX: 8.0, sigmaY: 8.0), // تأثير الزجاج المصنفر
|
|
child: AnimatedContainer(
|
|
duration: const Duration(milliseconds: 300),
|
|
padding: const EdgeInsets.symmetric(horizontal: 8),
|
|
decoration: BoxDecoration(
|
|
color: AppColor.secondaryColor.withOpacity(0.8), // لون شبه شفاف
|
|
borderRadius: BorderRadius.circular(50.0),
|
|
border: Border.all(color: AppColor.writeColor.withOpacity(0.2)),
|
|
),
|
|
child: Row(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
mainAxisSize: MainAxisSize.min, // ليأخذ الشريط حجم الأزرار فقط
|
|
children: [
|
|
// --- تم استخدام دالة مساعدة جديدة للزر ---
|
|
_buildMapActionButton(
|
|
icon: Icons.satellite_alt_outlined,
|
|
tooltip: 'Toggle Map Type',
|
|
onPressed: () => controller.changeMapType(),
|
|
),
|
|
_buildVerticalDivider(),
|
|
_buildMapActionButton(
|
|
icon: Icons.traffic_outlined,
|
|
tooltip: 'Toggle Traffic',
|
|
onPressed: () => controller.changeMapTraffic(),
|
|
),
|
|
_buildVerticalDivider(),
|
|
_buildMapActionButton(
|
|
icon: Icons.my_location_rounded,
|
|
tooltip: 'Go to My Location',
|
|
onPressed: () {
|
|
controller.mapController?.animateCamera(
|
|
CameraUpdate.newLatLng(
|
|
LatLng(
|
|
controller.passengerLocation.latitude,
|
|
controller.passengerLocation.longitude,
|
|
),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
_buildVerticalDivider(),
|
|
_buildMapActionButton(
|
|
icon: Octicons.watch,
|
|
tooltip: 'VIP Waiting Page',
|
|
onPressed: () => Get.to(() => VipWaittingPage()),
|
|
),
|
|
_buildMapActionButton(
|
|
icon: Octicons.ellipsis,
|
|
tooltip: 'test',
|
|
onPressed: () => Get.to(() => TestPage()),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
// --- دالة مساعدة جديدة لإنشاء الأزرار بشكل أنيق ---
|
|
Widget _buildMapActionButton({
|
|
required IconData icon,
|
|
required String tooltip,
|
|
required VoidCallback onPressed,
|
|
}) {
|
|
return IconButton(
|
|
onPressed: onPressed,
|
|
icon: Icon(icon, color: AppColor.writeColor, size: 22),
|
|
tooltip: tooltip,
|
|
splashRadius: 22,
|
|
padding: const EdgeInsets.all(12),
|
|
constraints: const BoxConstraints(), // لإزالة المساحات الافتراضية
|
|
);
|
|
}
|
|
|
|
// --- ويدجت للفاصل الرأسي بين الأزرار ---
|
|
Widget _buildVerticalDivider() {
|
|
return Container(
|
|
height: 20,
|
|
width: 1,
|
|
color: AppColor.writeColor.withOpacity(0.2),
|
|
);
|
|
}
|
|
|
|
// --- باقي الكود الخاص بك يبقى كما هو بدون تغيير ---
|
|
class TestPage extends StatelessWidget {
|
|
const TestPage({
|
|
super.key,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(),
|
|
body: Center(
|
|
child: TextButton(
|
|
onPressed: () async {
|
|
var token =
|
|
'e4t5mB-WTsyhi2M0v5AOAy:APA91bGmQG8gcitcJB7x69oHCweCn44NdljP5ZVlO1IK62w62Gac4dCIjE3SMFPV6YcFdTMQrRHE1BXnbktEM19JE4xjcEyLz-GwC1HrCbDl2X24d4PfrPQ';
|
|
NotificationService.sendNotification(
|
|
target: token,
|
|
title: 'Hi ,I will go now',
|
|
body: 'A passenger is waiting for you.',
|
|
isTopic: false, // Important: this is a token
|
|
);
|
|
},
|
|
child: Text(
|
|
"Text Button",
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|