import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:Intaleq/views/home/my_wallet/payment_history_passenger_page.dart'; import 'dart:ui'; // لاستخدام تأثيرات متقدمة import '../../../constant/box_name.dart'; import '../../../constant/colors.dart'; import '../../../constant/info.dart'; import '../../../constant/style.dart'; import '../../../controller/functions/toast.dart'; import '../../../controller/home/payment/credit_card_controller.dart'; import '../../../controller/payment/payment_controller.dart'; import '../../../main.dart'; import '../../widgets/elevated_btn.dart'; import '../../widgets/my_scafold.dart'; import 'passenger_wallet_dialoge.dart'; // --- الويدجت الرئيسية بالتصميم الجديد --- class PassengerWallet extends StatelessWidget { const PassengerWallet({super.key}); @override Widget build(BuildContext context) { // نفس منطق استدعاء الكنترولرز Get.put(PaymentController()); Get.put(CreditCardController()); return MyScafolld( title: 'My Balance'.tr, isleading: true, body: [ // استخدام Stack فقط لعرض الـ Dialog فوق المحتوى عند الحاجة Stack( children: [ // استخدام Column لتنظيم المحتوى بشكل أفضل Padding( padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ const SizedBox(height: 16), // --- 1. بطاقة المحفظة العصرية --- _buildModernWalletCard(), const SizedBox(height: 32), Text("Actions".tr, style: AppStyle.title.copyWith( color: AppColor.writeColor.withOpacity(0.6))), const Divider(height: 24), // --- 2. قائمة الخيارات المنظمة --- _buildActionTile( icon: Icons.add_card_rounded, title: 'Top up Balance'.tr, subtitle: 'Add funds using our secure methods'.tr, onTap: () => showPaymentBottomSheet(context), // نفس دالتك القديمة ), _buildActionTile( icon: Icons.history_rounded, title: 'Payment History'.tr, subtitle: 'View your past transactions'.tr, onTap: () => Get.to( () => const PaymentHistoryPassengerPage(), transition: Transition.rightToLeftWithFade), ), _buildActionTile( icon: Icons.phone_iphone_rounded, title: 'Set Phone Number'.tr, subtitle: 'Link a phone number for transfers'.tr, onTap: () => _showWalletPhoneDialog(context, Get.find()), // نفس دالتك القديمة ), ], ), ), // --- عرض الـ Dialog بنفس طريقتك القديمة --- const PassengerWalletDialog(), ], ), ], ); } // --- ويدجت مساعدة لبناء بطاقة المحفظة --- Widget _buildModernWalletCard() { return GetBuilder( builder: (paymentController) { return Container( width: double.infinity, height: Get.height * 0.25, decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), gradient: const LinearGradient( colors: [ AppColor.primaryColor, Color(0xFF1E3A8A) ], // تدرج لوني أنيق begin: Alignment.topLeft, end: Alignment.bottomRight, ), boxShadow: [ BoxShadow( color: AppColor.primaryColor.withOpacity(0.3), blurRadius: 25, offset: const Offset(0, 10), ), ], ), child: Stack( children: [ // --- عنصر تزييني (شكل موجة) --- Positioned( right: -100, bottom: -100, child: Icon( Icons.waves, size: 250, color: Colors.white.withOpacity(0.05), ), ), Padding( padding: const EdgeInsets.all(24.0), child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( '${AppInformation.appName} ${'Balance'.tr}', style: AppStyle.headTitle.copyWith( color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold, ), ), Icon(Icons.memory_rounded, color: Colors.white.withOpacity(0.7), size: 30), // أيقونة الشريحة ], ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( "Current Balance".tr, style: AppStyle.subtitle .copyWith(color: Colors.white.withOpacity(0.7)), ), Text( '${box.read(BoxName.passengerWalletTotal) ?? '0.0'} ${'SYP'.tr}', style: AppStyle.headTitle2.copyWith( color: Colors.white, fontSize: 28, fontWeight: FontWeight.w600, letterSpacing: 1.5, ), ), ], ), Row( mainAxisAlignment: MainAxisAlignment.end, children: [ Text( (box.read(BoxName.name) ?? "User Name").toString(), style: AppStyle.title.copyWith( color: Colors.white.withOpacity(0.8), fontSize: 16, ), ), ], ), ], ), ), ], ), ); }, ); } // --- ويدجت مساعدة لبناء عناصر القائمة --- Widget _buildActionTile({ required IconData icon, required String title, required String subtitle, required VoidCallback onTap, }) { return ListTile( onTap: onTap, contentPadding: const EdgeInsets.symmetric(vertical: 8, horizontal: 8), leading: Container( padding: const EdgeInsets.all(10), decoration: BoxDecoration( color: AppColor.primaryColor.withOpacity(0.1), borderRadius: BorderRadius.circular(12), ), child: Icon(icon, color: AppColor.primaryColor, size: 24), ), title: Text(title.tr, style: AppStyle.title), subtitle: Text(subtitle.tr, style: AppStyle.subtitle .copyWith(color: AppColor.writeColor.withOpacity(0.6))), trailing: const Icon(Icons.arrow_forward_ios_rounded, size: 16, color: AppColor.writeColor), ); } // --- نفس دالة الـ Dialog الخاصة بك --- void _showWalletPhoneDialog( BuildContext context, PaymentController controller) { Get.dialog( CupertinoAlertDialog( title: Text('Insert Wallet phone number'.tr), content: Column( children: [ const SizedBox(height: 10), Form( key: controller.formKey, child: CupertinoTextField( controller: controller.walletphoneController, placeholder: 'Insert Wallet phone number'.tr, keyboardType: TextInputType.phone, padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 10), ), ), ], ), actions: [ CupertinoDialogAction( child: Text('Cancel'.tr, style: const TextStyle(color: CupertinoColors.destructiveRed)), onPressed: () => Get.back(), ), CupertinoDialogAction( child: Text('OK'.tr, style: const TextStyle(color: CupertinoColors.activeGreen)), onPressed: () { Get.back(); box.write( BoxName.phoneWallet, (controller.walletphoneController.text)); Toast.show(context, 'Phone Wallet Saved Successfully'.tr, AppColor.greenColor); }, ), ], ), barrierDismissible: false, ); } } // الكلاس القديم CardIntaleqWallet لم نعد بحاجة إليه لأنه تم دمجه وتطويره