4/3/10
This commit is contained in:
@@ -481,7 +481,7 @@ class MyTranslation extends Translations {
|
|||||||
'Accept Order': "اقبل الطلب",
|
'Accept Order': "اقبل الطلب",
|
||||||
'reject your order.': "رفض طلبك.",
|
'reject your order.': "رفض طلبك.",
|
||||||
'Bottom Bar Example': "مثال لشريط الأسفل",
|
'Bottom Bar Example': "مثال لشريط الأسفل",
|
||||||
'Statistics': "الإحصائيات",
|
'Statistics': "الإحصائيات",'Available for rides':'مشاوير متاحة',
|
||||||
'Scan Id': "مسح الهوية",
|
'Scan Id': "مسح الهوية",
|
||||||
'Camera not initilaized yet': "الكاميرا لم تُثبت بعد",
|
'Camera not initilaized yet': "الكاميرا لم تُثبت بعد",
|
||||||
'Scan ID MklGoogle': "مسح هوية MklGoogle",
|
'Scan ID MklGoogle': "مسح هوية MklGoogle",
|
||||||
|
|||||||
27
lib/controller/notification/ride_available_controller.dart
Normal file
27
lib/controller/notification/ride_available_controller.dart
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,83 +18,78 @@ class HistoryCaptain extends StatelessWidget {
|
|||||||
title: 'History Page'.tr,
|
title: 'History Page'.tr,
|
||||||
body: [
|
body: [
|
||||||
GetBuilder<HistoryCaptainController>(
|
GetBuilder<HistoryCaptainController>(
|
||||||
builder: (historyCaptainController) => Expanded(
|
builder: (historyCaptainController) => historyCaptainController
|
||||||
child: historyCaptainController.isloading
|
.isloading
|
||||||
? const MyCircularProgressIndicator()
|
? const MyCircularProgressIndicator()
|
||||||
: ListView.builder(
|
: ListView.builder(
|
||||||
itemCount: historyCaptainController
|
itemCount:
|
||||||
.historyData['message'].length,
|
historyCaptainController.historyData['message'].length,
|
||||||
itemBuilder: (BuildContext context, int index) {
|
itemBuilder: (BuildContext context, int index) {
|
||||||
var list = historyCaptainController
|
var list = historyCaptainController.historyData['message']
|
||||||
.historyData['message'][index];
|
[index];
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
list['status'] != 'Cancel'
|
list['status'] != 'Cancel'
|
||||||
? historyCaptainController
|
? historyCaptainController
|
||||||
.getHistoryDetails(list['order_id'])
|
.getHistoryDetails(list['order_id'])
|
||||||
: Get.defaultDialog(
|
: Get.defaultDialog(
|
||||||
title: 'This Trip Cancelled'.tr,
|
title: 'This Trip Cancelled'.tr,
|
||||||
middleText: '',
|
middleText: '',
|
||||||
titleStyle: AppStyle.title,
|
titleStyle: AppStyle.title,
|
||||||
confirm: MyElevatedButton(
|
confirm: MyElevatedButton(
|
||||||
title: 'Ok'.tr,
|
title: 'Ok'.tr,
|
||||||
onPressed: () => Get.back()));
|
onPressed: () => Get.back()));
|
||||||
},
|
},
|
||||||
child: Card(
|
child: Card(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment:
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
MainAxisAlignment.spaceBetween,
|
children: [
|
||||||
children: [
|
Column(
|
||||||
Column(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
crossAxisAlignment:
|
children: [
|
||||||
CrossAxisAlignment.start,
|
Text(
|
||||||
children: [
|
'OrderId'.tr,
|
||||||
Text(
|
style: AppStyle.title,
|
||||||
'OrderId'.tr,
|
),
|
||||||
style: AppStyle.title,
|
Text(
|
||||||
),
|
list['order_id'],
|
||||||
Text(
|
style: AppStyle.subtitle,
|
||||||
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),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
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,
|
isleading: true,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -2,10 +2,9 @@ import 'package:SEFER/constant/api_key.dart';
|
|||||||
import 'package:SEFER/constant/links.dart';
|
import 'package:SEFER/constant/links.dart';
|
||||||
import 'package:SEFER/constant/style.dart';
|
import 'package:SEFER/constant/style.dart';
|
||||||
import 'package:SEFER/controller/home/captin/home_captain_controller.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:SEFER/views/widgets/mycircular.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
|
||||||
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
|
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
|
||||||
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
|
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -145,6 +144,15 @@ class DrawerCaptain extends StatelessWidget {
|
|||||||
// Handle history of trip item tap
|
// 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(
|
ListTile(
|
||||||
leading: const Icon(Icons.notifications),
|
leading: const Icon(Icons.notifications),
|
||||||
title: Text('Notifications'.tr),
|
title: Text('Notifications'.tr),
|
||||||
|
|||||||
@@ -399,8 +399,8 @@ class OrderRequestPage extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
orderRequestController.addRideToNotificationDriverString(
|
orderRequestController.addRideToNotificationDriverString(
|
||||||
myList[16].toString(),
|
myList[16].toString(),
|
||||||
myList[0].toString(),
|
myList[29].toString(),
|
||||||
myList[1].toString(),
|
myList[30].toString(),
|
||||||
'${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day}',
|
'${DateTime.now().year}-${DateTime.now().month}-${DateTime.now().day}',
|
||||||
'${DateTime.now().hour}:${DateTime.now().minute}',
|
'${DateTime.now().hour}:${DateTime.now().minute}',
|
||||||
myList[2].toString(),
|
myList[2].toString(),
|
||||||
|
|||||||
76
lib/views/notification/available_rides_page.dart
Normal file
76
lib/views/notification/available_rides_page.dart
Normal 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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user