import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_lucide/flutter_lucide.dart'; import 'package:intl/intl.dart'; import '../../config/constants/app_constant.dart'; import '../../config/custom_text.dart'; import '../../models/ride_model.dart'; import '../../widgets/Avatar.dart'; import '../rideDetails_screen.dart'; class PaymentCard extends StatelessWidget { const PaymentCard({required this.ride}); final RideDto ride; @override Widget build(BuildContext context) { final pickup = ride.startLocationName ?? 'Pick up'; final drop = ride.endLocationName ?? 'Drop off'; final dt = ride.timestamp ?? DateTime.now(); final timeStr = DateFormat('hh:mm a').format(dt); final dateStr = DateFormat('EEE d MMM').format(dt); final priceStr = '${(ride.totalPrice ?? 0).toStringAsFixed(2)} TND'.toUpperCase(); return InkWell( borderRadius: BorderRadius.circular(18), onTap: () { Navigator.push( context, MaterialPageRoute(builder: (_) => RideDetailClientScreen(ride: ride)), ); }, child: Container( margin: const EdgeInsets.symmetric(horizontal: 12), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(18), //border: Border.all(color: Colors.grey.shade500), boxShadow: [ BoxShadow( color: Colors.black12, blurRadius: 12, offset: Offset(2, 6), ), ], ), padding: const EdgeInsets.fromLTRB(12, 12, 12, 14), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 6), Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ const Txt( text: 'PICK UP', style: TextStyle( fontSize: 11, letterSpacing: .4, color: Color(0xFF8D8D8D)), ), const SizedBox(height: 4,), Txt( text: pickup, style: const TextStyle( fontSize: 15, fontWeight: FontWeight.w600, color: Colors.black), overflow: TextOverflow.ellipsis, ), const SizedBox(height: 12), const Txt( text: 'DROP OFF', style: TextStyle( fontSize: 11, letterSpacing: .4, color: Color(0xFF8D8D8D)), ), const SizedBox(height: 4,), Txt( text: drop, style: const TextStyle( fontSize: 15, fontWeight: FontWeight.w600, color: Colors.black), overflow: TextOverflow.ellipsis, ), ], ), const SizedBox(height: 12), // date / time / price row Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ const Icon(Icons.calendar_today_outlined, size: 18), const SizedBox(width: 6), Txt( text: dateStr, style: const TextStyle(fontSize: 14,fontFamily: 'Inter', color: Color(0xFF0A0C11)), ), const SizedBox(width: 16), const Icon(Icons.access_time, size: 18,color: Color(0xFF0A0C11)), const SizedBox(width: 6), Txt( text: timeStr, style: const TextStyle(fontSize: 14,fontFamily: 'Inter', color: Color(0xFF0A0C11)), ), const Spacer(), const Icon(LucideIcons.banknote, size: 20,color: Color(0xFF0A0C11)), const SizedBox(width: 6), Txt( text: priceStr, style: const TextStyle( fontSize: 16,fontFamily: 'Inter', color: Colors.black, fontWeight: FontWeight.w600), ), ], ), ), const SizedBox(height: 12), ], ), ), ); } }