238 lines
12 KiB
Dart
238 lines
12 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:ride/constant/colors.dart';
|
|
import 'package:ride/constant/style.dart';
|
|
import 'package:ride/views/widgets/my_scafold.dart';
|
|
import 'package:ride/views/widgets/mycircular.dart';
|
|
import 'package:syncfusion_flutter_charts/charts.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<RideAdminController>(
|
|
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<ChartDataS, String>>[
|
|
LineSeries<ChartDataS, String>(
|
|
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,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
)
|
|
],
|
|
))
|
|
]);
|
|
}
|
|
}
|