import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; import 'package:SEFER/views/widgets/mycircular.dart'; import '../../../controller/admin/ride_admin_controller.dart'; class Rides extends StatelessWidget { Rides({super.key}); RideAdminController rideAdminController = Get.put(RideAdminController()); @override Widget build(BuildContext context) { return MyScafolld(title: 'Rides'.tr, isleading: true, body: [ GetBuilder( builder: (rideAdminController) => rideAdminController.isLoading ? const Center(child: MyCircularProgressIndicator()) : Column( children: [ SizedBox( height: Get.height * .4, child: LineChart( duration: const Duration(milliseconds: 150), curve: Curves.ease, LineChartData( lineBarsData: [ LineChartBarData( spots: rideAdminController.chartData, isCurved: true, color: Colors.deepPurpleAccent, // Custom color barWidth: 3, // Thinner line dotData: const FlDotData( show: true), // Show dots on each point belowBarData: BarAreaData( // Add gradient fill below the line show: true, color: AppColor.deepPurpleAccent, ), isStrokeJoinRound: true, shadow: const BoxShadow( color: AppColor.yellowColor, blurRadius: 4, offset: Offset(2, 2), ), ), ], showingTooltipIndicators: const [], titlesData: FlTitlesData( show: true, topTitles: AxisTitles( axisNameWidget: Text( 'Days', style: AppStyle.title, ), axisNameSize: 30, sideTitles: const SideTitles( reservedSize: 30, showTitles: true)), bottomTitles: AxisTitles( axisNameWidget: Text( 'Total Trips on month'.tr, style: AppStyle.title, ), axisNameSize: 30, sideTitles: const SideTitles( reservedSize: 30, showTitles: true)), leftTitles: AxisTitles( axisNameWidget: Text( 'Counts of Trips on month'.tr, style: AppStyle.title, ), axisNameSize: 30, sideTitles: const SideTitles( reservedSize: 30, showTitles: true)), ), gridData: const FlGridData( show: true, ), borderData: FlBorderData( show: true, border: const Border( bottom: BorderSide(color: AppColor.accentColor), left: BorderSide(color: AppColor.accentColor), ), ), ), ), ), // SizedBox( // height: Get.height * .4, // child: PieChart( // PieChartData( // sectionsSpace: 4, // Adjust spacing between sections // centerSpaceRadius: // 40, // Adjust radius of center space // sections: [ // for (final rideData in rideAdminController.rideData) // PieChartSectionData( // value: rideData.ridesCount.toDouble(), // title: '${rideData.day}', showTitle: true, // titleStyle: // AppStyle.subtitle, // Display day as title // radius: 60, // Adjust radius of each section // color: // AppColor.deepPurpleAccent, // Custom color // ), // ], // ), // ), // ), // SizedBox( // // height: 400, // child: SfCartesianChart( // legend: const Legend( // isVisible: true, // position: LegendPosition.bottom, // overflowMode: LegendItemOverflowMode.wrap, // textStyle: TextStyle( // color: Colors.white, // fontSize: 12, // fontWeight: FontWeight.bold, // ), // ), // borderWidth: 2, // borderColor: AppColor.blueColor, // plotAreaBorderColor: AppColor.deepPurpleAccent, // enableAxisAnimation: true, // primaryXAxis: CategoryAxis( // borderColor: AppColor.accentColor, borderWidth: 2, // title: AxisTitle( // text: 'Total Trips on month'.tr, // textStyle: AppStyle.title, // ), // // labelRotation: 45, // majorGridLines: const MajorGridLines(width: 0), // ), // primaryYAxis: const NumericAxis(isVisible: false), // series: >[ // LineSeries( // dataSource: rideAdminController.chartDatasync, // xValueMapper: (ChartDataS data, _) => '${data.day}', // yValueMapper: (ChartDataS data, _) => // data.ridesCount, // dataLabelSettings: // const DataLabelSettings(isVisible: true), // ), // ], // ), // ), const SizedBox( height: 20, ), Card( elevation: 4, color: AppColor.deepPurpleAccent, child: Padding( padding: const EdgeInsets.all(8.0), child: Text( 'Total Trips on this Month is ${rideAdminController.jsonResponse['message'][0]['current_month_rides_count']}', style: AppStyle.title, ), ), ), const SizedBox( height: 20, ), Card( elevation: 4, color: AppColor.yellowColor, child: Padding( padding: const EdgeInsets.all(8.0), child: Column( children: [ Text( 'Driver Average Duration: ${rideAdminController.ridesDetails[0]['driver_avg_duration']}', style: AppStyle.subtitle, ), Text( 'Number of Drivers: ${rideAdminController.ridesDetails[0]['num_Driver']}', style: AppStyle.subtitle, ), Text( 'Total Rides: ${rideAdminController.ridesDetails[0]['total_rides']}', style: AppStyle.subtitle, ), Text( 'Ongoing Rides: ${rideAdminController.ridesDetails[0]['ongoing_rides']}', style: AppStyle.subtitle, ), Text( 'Completed Rides: ${rideAdminController.ridesDetails[0]['completed_rides']}', style: AppStyle.subtitle, ), Text( 'Cancelled Rides: ${rideAdminController.ridesDetails[0]['cancelled_rides']}', style: AppStyle.subtitle, ), Text( 'Longest Duration: ${rideAdminController.ridesDetails[0]['longest_duration']}', style: AppStyle.subtitle, ), Text( 'Total Distance: ${rideAdminController.ridesDetails[0]['total_distance']} km', style: AppStyle.subtitle, ), Text( 'Average Distance: ${rideAdminController.ridesDetails[0]['average_distance']} km', style: AppStyle.subtitle, ), Text( 'Longest Distance: ${rideAdminController.ridesDetails[0]['longest_distance']} km', style: AppStyle.subtitle, ), Text( 'Total Driver Earnings: \$${rideAdminController.ridesDetails[0]['total_driver_earnings']}', style: AppStyle.subtitle, ), Text( 'Total Company Earnings: \$${rideAdminController.ridesDetails[0]['total_company_earnings']}', style: AppStyle.subtitle, ), Text( 'Company Percentage: ${rideAdminController.ridesDetails[0]['companyPercent']} %', style: AppStyle.subtitle, ), ], ), ), ) ], )) ]); } }