import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/notification/ride_available_controller.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; import 'package:SEFER/views/widgets/mycircular.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; class AvailableRidesPage extends StatelessWidget { const AvailableRidesPage({super.key}); @override Widget build(BuildContext context) { Get.put(RideAvailableController()); return GetBuilder( builder: (rideAvailableController) { return MyScafolld( title: 'Available for rides'.tr, body: [ rideAvailableController.isLoading ? const MyCircularProgressIndicator() : ListView.builder( itemCount: rideAvailableController .rideAvailableMap['message'].length, itemBuilder: (context, index) => RideAvailableCard( rideInfo: rideAvailableController .rideAvailableMap['message'][index], ), ) ], isleading: true); }); } } class RideAvailableCard extends StatelessWidget { final Map rideInfo; const RideAvailableCard({Key? key, required this.rideInfo}) : super(key: key); @override Widget build(BuildContext context) { return Card( margin: const EdgeInsets.all(8.0), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), elevation: 4, child: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // _buildLocationRow('🟢', rideInfo['startName']), // const SizedBox(height: 8), // _buildLocationRow('🔴', rideInfo['endName']), _buildLocationRow('↑', rideInfo['startName'], AppColor.greenColor), const SizedBox(height: 8), _buildLocationRow('↓', rideInfo['endName'], Colors.red), const SizedBox(height: 16), _buildInfoRow(), const SizedBox(height: 16), _buildActionRow(), ], ), ), ); } Widget _buildLocationRow(String icon, String location, Color iconColor) { return Row( children: [ Text( icon, style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold, color: iconColor), ), const SizedBox(width: 8), Expanded( child: Text( location, style: AppStyle.subtitle, maxLines: 2, overflow: TextOverflow.ellipsis, ), ), ], ); } Widget _buildInfoRow() { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text('${'Price:'.tr} ${rideInfo['price']} \$', style: AppStyle.title), Text( rideInfo['carType'], style: AppStyle.title.copyWith(color: AppColor.greenColor), ), ], ); } Widget _buildActionRow() { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text('📈 ${rideInfo['passengerRate']}', style: AppStyle.title), const SizedBox(height: 4), Text( '📍 ${rideInfo['distance']} ${'KM'.tr}', style: AppStyle.title.copyWith(color: AppColor.greenColor), ), ], ), ElevatedButton( onPressed: () => _acceptRide(), style: ElevatedButton.styleFrom( backgroundColor: AppColor.greenColor, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), ), child: Text('Accept'.tr), ), ], ); } void _acceptRide() async { // Your existing accept ride logic here // ... } }