This commit is contained in:
Hamza Aleghwairyeen
2024-04-03 18:01:20 +03:00
parent a17ef6a7e6
commit 8370d3bd73
6 changed files with 186 additions and 80 deletions

View File

@@ -481,7 +481,7 @@ class MyTranslation extends Translations {
'Accept Order': "‏اقبل الطلب",
'reject your order.': "رفض طلبك.",
'Bottom Bar Example': "مثال لشريط الأسفل",
'Statistics': "الإحصائيات",
'Statistics': "الإحصائيات",'Available for rides':'‏مشاوير متاحة',
'Scan Id': "مسح الهوية",
'Camera not initilaized yet': "الكاميرا لم تُثبت بعد",
'Scan ID MklGoogle': "مسح هوية MklGoogle",

View File

@@ -0,0 +1,27 @@
import 'dart:convert';
import 'package:get/get.dart';
import '../../constant/links.dart';
import '../functions/crud.dart';
class RideAvailableController extends GetxController {
bool isLoading = false;
Map rideAvalibleMap = {};
getRideAvalible() async {
isLoading = true;
var res = await CRUD().get(link: AppLink.getRideWaiting, payload: {});
if (res != 'failure') {
rideAvalibleMap = jsonDecode(res);
print(rideAvalibleMap);
isLoading = false;
update();
}
}
@override
void onInit() {
getRideAvalible();
super.onInit();
}
}

View File

@@ -18,83 +18,78 @@ class HistoryCaptain extends StatelessWidget {
title: 'History Page'.tr,
body: [
GetBuilder<HistoryCaptainController>(
builder: (historyCaptainController) => Expanded(
child: historyCaptainController.isloading
? const MyCircularProgressIndicator()
: ListView.builder(
itemCount: historyCaptainController
.historyData['message'].length,
itemBuilder: (BuildContext context, int index) {
var list = historyCaptainController
.historyData['message'][index];
return InkWell(
onTap: () {
list['status'] != 'Cancel'
? historyCaptainController
.getHistoryDetails(list['order_id'])
: Get.defaultDialog(
title: 'This Trip Cancelled'.tr,
middleText: '',
titleStyle: AppStyle.title,
confirm: MyElevatedButton(
title: 'Ok'.tr,
onPressed: () => Get.back()));
},
child: Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
'OrderId'.tr,
style: AppStyle.title,
),
Text(
list['order_id'],
style: AppStyle.subtitle,
),
],
),
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
'created time'.tr,
style: AppStyle.title,
),
Text(
list['created_at'],
style: AppStyle.subtitle,
),
],
),
Text(
list['status'],
style: list['status'] == 'Apply'
? AppStyle.title.copyWith(
color: AppColor.greenColor)
: list['status'] == 'Refused'
? AppStyle.title.copyWith(
color: AppColor.redColor)
: AppStyle.title.copyWith(
color:
AppColor.yellowColor),
),
],
),
builder: (historyCaptainController) => historyCaptainController
.isloading
? const MyCircularProgressIndicator()
: ListView.builder(
itemCount:
historyCaptainController.historyData['message'].length,
itemBuilder: (BuildContext context, int index) {
var list = historyCaptainController.historyData['message']
[index];
return InkWell(
onTap: () {
list['status'] != 'Cancel'
? historyCaptainController
.getHistoryDetails(list['order_id'])
: Get.defaultDialog(
title: 'This Trip Cancelled'.tr,
middleText: '',
titleStyle: AppStyle.title,
confirm: MyElevatedButton(
title: 'Ok'.tr,
onPressed: () => Get.back()));
},
child: Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'OrderId'.tr,
style: AppStyle.title,
),
Text(
list['order_id'],
style: AppStyle.subtitle,
),
],
),
),
);
},
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'created time'.tr,
style: AppStyle.title,
),
Text(
list['created_at'],
style: AppStyle.subtitle,
),
],
),
Text(
list['status'],
style: list['status'] == 'Apply'
? AppStyle.title
.copyWith(color: AppColor.greenColor)
: list['status'] == 'Refused'
? AppStyle.title.copyWith(
color: AppColor.redColor)
: AppStyle.title.copyWith(
color: AppColor.yellowColor),
),
],
),
),
),
))
);
},
))
],
isleading: true,
);

View File

@@ -2,10 +2,9 @@ import 'package:SEFER/constant/api_key.dart';
import 'package:SEFER/constant/links.dart';
import 'package:SEFER/constant/style.dart';
import 'package:SEFER/controller/home/captin/home_captain_controller.dart';
import 'package:SEFER/views/notification/available_rides_page.dart';
import 'package:SEFER/views/widgets/mycircular.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
import 'package:get/get.dart';
@@ -145,6 +144,15 @@ class DrawerCaptain extends StatelessWidget {
// Handle history of trip item tap
},
),
ListTile(
leading: const Icon(Icons.phonelink_ring_rounded),
title: Text('Available for rides'.tr),
onTap: () {
Get.to(() => const AvailableRidesPage(),
transition: Transition.rightToLeftWithFade);
// Handle history of trip item tap
},
),
ListTile(
leading: const Icon(Icons.notifications),
title: Text('Notifications'.tr),

View File

@@ -399,8 +399,8 @@ class OrderRequestPage extends StatelessWidget {
);
orderRequestController.addRideToNotificationDriverString(
myList[16].toString(),
myList[0].toString(),
myList[1].toString(),
myList[29].toString(),
myList[30].toString(),
'${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day}',
'${DateTime.now().hour}:${DateTime.now().minute}',
myList[2].toString(),

View File

@@ -0,0 +1,76 @@
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: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<RideAvailableController>(
builder: (rideAvailableController) {
return MyScafolld(
title: 'Available for rides'.tr,
body: [
rideAvailableController.rideAvalibleMap['message'].length < 1
? ListView.builder(
itemCount: rideAvailableController
.rideAvalibleMap['message'].length,
itemBuilder: (BuildContext context, int index) {
var list = rideAvailableController
.rideAvalibleMap['message'][index];
return Container(
decoration: AppStyle.boxDecoration1,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text(
'Price: ${list['start_location']}',
style: AppStyle.title,
),
Text(
'Price: ${list['end_location']}',
style: AppStyle.title,
),
const SizedBox(height: 4),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text('${'Price:'.tr}${list['price']} \$'),
const SizedBox(height: 4),
Text(
'${list['carType']}',
style: AppStyle.title
.copyWith(color: AppColor.greenColor),
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text('📈 ${list['passengerRate']}',
style: AppStyle.title),
const SizedBox(height: 4),
Text(
'📍 ${list['distance']}${'KM'.tr}',
style: AppStyle.title
.copyWith(color: AppColor.greenColor),
),
],
)
],
),
);
})
: Center(
child: Text('text'),
)
],
isleading: true);
});
}
}