11/13/1
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 37 KiB |
@@ -44,6 +44,11 @@ class AppLink {
|
|||||||
static const String getDriverpaymentToday = "$ride/payment/get.php";
|
static const String getDriverpaymentToday = "$ride/payment/get.php";
|
||||||
static const String getAllPayment = "$ride/payment/getAllPayment.php";
|
static const String getAllPayment = "$ride/payment/getAllPayment.php";
|
||||||
|
|
||||||
|
//-----------------Feed Back------------------
|
||||||
|
static const String addFeedBack = "$ride/feedBack/add.php";
|
||||||
|
static const String getFeedBack = "$ride/feedBack/get.php";
|
||||||
|
static const String updateFeedBack = "$ride/feedBack/updateFeedBack.php";
|
||||||
|
|
||||||
//-----------------DriverOrder------------------
|
//-----------------DriverOrder------------------
|
||||||
|
|
||||||
static const String addDriverOrder = "$ride/driver_order/add.php";
|
static const String addDriverOrder = "$ride/driver_order/add.php";
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import 'package:ride/controller/functions/secure_storage.dart';
|
|||||||
import 'package:ride/main.dart';
|
import 'package:ride/main.dart';
|
||||||
import 'package:ride/views/auth/verify_email_page.dart';
|
import 'package:ride/views/auth/verify_email_page.dart';
|
||||||
import 'package:ride/views/home/Captin/home_captin.dart';
|
import 'package:ride/views/home/Captin/home_captin.dart';
|
||||||
import 'package:ride/views/home/map_page.dart';
|
import 'package:ride/views/home/map_page_passenger.dart';
|
||||||
|
|
||||||
class LoginCaptinController extends GetxController {
|
class LoginCaptinController extends GetxController {
|
||||||
final formKey = GlobalKey<FormState>();
|
final formKey = GlobalKey<FormState>();
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import 'package:ride/controller/functions/crud.dart';
|
|||||||
import 'package:ride/controller/functions/secure_storage.dart';
|
import 'package:ride/controller/functions/secure_storage.dart';
|
||||||
import 'package:ride/main.dart';
|
import 'package:ride/main.dart';
|
||||||
import 'package:ride/views/auth/verify_email_page.dart';
|
import 'package:ride/views/auth/verify_email_page.dart';
|
||||||
import 'package:ride/views/home/map_page.dart';
|
import 'package:ride/views/home/map_page_passenger.dart';
|
||||||
|
|
||||||
class LoginController extends GetxController {
|
class LoginController extends GetxController {
|
||||||
final formKey = GlobalKey<FormState>();
|
final formKey = GlobalKey<FormState>();
|
||||||
@@ -56,7 +56,7 @@ class LoginController extends GetxController {
|
|||||||
box.write(BoxName.name, jsonDecoeded['data'][0]['first_name']);
|
box.write(BoxName.name, jsonDecoeded['data'][0]['first_name']);
|
||||||
box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']);
|
box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']);
|
||||||
SecureStorage().saveData(BoxName.password, passwordController.text);
|
SecureStorage().saveData(BoxName.password, passwordController.text);
|
||||||
Get.offAll(() => MapPage());
|
Get.offAll(() => MapPagePassenger());
|
||||||
isloading = false;
|
isloading = false;
|
||||||
update();
|
update();
|
||||||
print(box.read(BoxName.passengerID).toString());
|
print(box.read(BoxName.passengerID).toString());
|
||||||
@@ -98,7 +98,7 @@ class LoginController extends GetxController {
|
|||||||
|
|
||||||
goToMapPage() {
|
goToMapPage() {
|
||||||
if (box.read(BoxName.email) != null) {
|
if (box.read(BoxName.email) != null) {
|
||||||
Get.offAll(() => const MapPage());
|
Get.offAll(() => const MapPagePassenger());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ class CameraClassController extends GetxController {
|
|||||||
await http.MultipartFile.fromPath('image', imageFile.path),
|
await http.MultipartFile.fromPath('image', imageFile.path),
|
||||||
); // Add the headers to the request
|
); // Add the headers to the request
|
||||||
request.headers.addAll({
|
request.headers.addAll({
|
||||||
// "Content-Type": "application/x-www-form-urlencoded",
|
"Content-Type": "application/x-www-form-urlencoded",
|
||||||
'Authorization':
|
'Authorization':
|
||||||
'Basic ${base64Encode(utf8.encode(AppCredintials.basicAuthCredentials))}',
|
'Basic ${base64Encode(utf8.encode(AppCredintials.basicAuthCredentials))}',
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -27,8 +27,10 @@ class CRUD {
|
|||||||
var jsonData = jsonDecode(response.body);
|
var jsonData = jsonDecode(response.body);
|
||||||
if (jsonData['status'] == 'success') {
|
if (jsonData['status'] == 'success') {
|
||||||
print(jsonData);
|
print(jsonData);
|
||||||
|
|
||||||
return response.body;
|
return response.body;
|
||||||
}
|
}
|
||||||
|
|
||||||
return jsonData['status'];
|
return jsonData['status'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -78,7 +80,7 @@ class CRUD {
|
|||||||
jsonData['status'],
|
jsonData['status'],
|
||||||
jsonData['message'],
|
jsonData['message'],
|
||||||
);
|
);
|
||||||
|
// print(response.body);
|
||||||
return response.body;
|
return response.body;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import 'package:google_maps_flutter/google_maps_flutter.dart';
|
|||||||
import 'package:google_polyline_algorithm/google_polyline_algorithm.dart';
|
import 'package:google_polyline_algorithm/google_polyline_algorithm.dart';
|
||||||
import 'package:location/location.dart';
|
import 'package:location/location.dart';
|
||||||
import 'package:ride/constant/box_name.dart';
|
import 'package:ride/constant/box_name.dart';
|
||||||
|
import 'package:ride/constant/colors.dart';
|
||||||
import 'package:ride/constant/credential.dart';
|
import 'package:ride/constant/credential.dart';
|
||||||
import 'package:ride/constant/links.dart';
|
import 'package:ride/constant/links.dart';
|
||||||
import 'package:ride/controller/firebase/firbase_messge.dart';
|
import 'package:ride/controller/firebase/firbase_messge.dart';
|
||||||
@@ -84,6 +85,7 @@ class MapPassengerController extends GetxController {
|
|||||||
int remainingTimeTimerRideBegin = 60;
|
int remainingTimeTimerRideBegin = 60;
|
||||||
String stringRemainingTimeRideBegin = '';
|
String stringRemainingTimeRideBegin = '';
|
||||||
late String rideId;
|
late String rideId;
|
||||||
|
bool noCarString = false;
|
||||||
late String driverToken;
|
late String driverToken;
|
||||||
int carsOrder = 0;
|
int carsOrder = 0;
|
||||||
|
|
||||||
@@ -415,15 +417,19 @@ class MapPassengerController extends GetxController {
|
|||||||
'northeastLon': northeast.longitude.toString(),
|
'northeastLon': northeast.longitude.toString(),
|
||||||
});
|
});
|
||||||
if (res == 'failure') {
|
if (res == 'failure') {
|
||||||
Get.defaultDialog(
|
noCarString = true;
|
||||||
title: 'No Car in your site.Sorry!',
|
update();
|
||||||
middleText: '',
|
// Get.snackbar('No Car in your site.Sorry!'.tr, '',
|
||||||
confirm: MyElevatedButton(
|
// backgroundColor: AppColor.redColor);
|
||||||
title: 'Back',
|
// Get.defaultDialog(
|
||||||
onPressed: () {
|
// title: 'No Car in your site.Sorry!'.tr,
|
||||||
Get.back();
|
// middleText: '',
|
||||||
markerReloadingTimer.cancel();
|
// confirm: MyElevatedButton(
|
||||||
}));
|
// title: 'Back',
|
||||||
|
// onPressed: () {
|
||||||
|
// Get.back();
|
||||||
|
// markerReloadingTimer.cancel();
|
||||||
|
// }));
|
||||||
} else {
|
} else {
|
||||||
dataCarsLocationByPassenger = jsonDecode(res);
|
dataCarsLocationByPassenger = jsonDecode(res);
|
||||||
// print(dataCarsLocationByPassenger);
|
// print(dataCarsLocationByPassenger);
|
||||||
|
|||||||
45
lib/controller/home/profile/feed_back_controller.dart
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:ride/constant/box_name.dart';
|
||||||
|
import 'package:ride/constant/colors.dart';
|
||||||
|
import 'package:ride/constant/links.dart';
|
||||||
|
import 'package:ride/constant/style.dart';
|
||||||
|
import 'package:ride/controller/functions/crud.dart';
|
||||||
|
import 'package:ride/main.dart';
|
||||||
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
|
class FeedBackController extends GetxController {
|
||||||
|
bool isLoading = false;
|
||||||
|
final formKey = GlobalKey<FormState>();
|
||||||
|
final feedbackController = TextEditingController();
|
||||||
|
|
||||||
|
void addFeedBack() async {
|
||||||
|
isLoading = true;
|
||||||
|
update();
|
||||||
|
var res = await CRUD().post(link: AppLink.addFeedBack, payload: {
|
||||||
|
'passengerId': box.read(BoxName.passengerID).toString(),
|
||||||
|
'feedBack': feedbackController.text
|
||||||
|
});
|
||||||
|
var d = jsonDecode(res);
|
||||||
|
// print(d);
|
||||||
|
if (d['status'].toString() == 'success') {
|
||||||
|
Get.defaultDialog(
|
||||||
|
title: 'Success'.tr,
|
||||||
|
titleStyle: AppStyle.title,
|
||||||
|
middleText: 'Feedback data saved successfully'.tr,
|
||||||
|
middleTextStyle: AppStyle.title,
|
||||||
|
confirm: MyElevatedButton(
|
||||||
|
kolor: AppColor.greenColor,
|
||||||
|
title: 'Ok'.tr,
|
||||||
|
onPressed: () {
|
||||||
|
Get.back();
|
||||||
|
Get.back();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
isLoading = false;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,12 +2,15 @@ import 'dart:convert';
|
|||||||
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:ride/constant/links.dart';
|
import 'package:ride/constant/links.dart';
|
||||||
|
import 'package:ride/constant/style.dart';
|
||||||
import 'package:ride/controller/functions/crud.dart';
|
import 'package:ride/controller/functions/crud.dart';
|
||||||
|
import 'package:ride/views/home/map_page_passenger.dart';
|
||||||
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
class PromosController extends GetxController {
|
class PromosController extends GetxController {
|
||||||
List<dynamic> promoList = [];
|
List<dynamic> promoList = [];
|
||||||
bool isloading = true;
|
bool isLoading = true;
|
||||||
|
late String promos;
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
getPromoBytody();
|
getPromoBytody();
|
||||||
@@ -17,16 +20,25 @@ class PromosController extends GetxController {
|
|||||||
Future getPromoBytody() async {
|
Future getPromoBytody() async {
|
||||||
var res = await CRUD().get(link: AppLink.getPromoBytody, payload: {});
|
var res = await CRUD().get(link: AppLink.getPromoBytody, payload: {});
|
||||||
if (res.toString() == 'failure') {
|
if (res.toString() == 'failure') {
|
||||||
Get.snackbar('failure', 'message');
|
Get.defaultDialog(
|
||||||
isloading = false;
|
title: 'No Promo for tody .'.tr,
|
||||||
|
middleText: '',
|
||||||
|
titleStyle: AppStyle.title,
|
||||||
|
confirm: MyElevatedButton(
|
||||||
|
title: 'Back'.tr,
|
||||||
|
onPressed: () {
|
||||||
|
Get.back();
|
||||||
|
Get.back();
|
||||||
|
}));
|
||||||
|
isLoading = false;
|
||||||
update();
|
update();
|
||||||
} else {
|
} else {
|
||||||
var jsonDecoded = jsonDecode(res);
|
var jsonDecoded = jsonDecode(res);
|
||||||
|
|
||||||
promoList = jsonDecoded['message'];
|
promoList = jsonDecoded['message'];
|
||||||
print(promoList);
|
isLoading = false;
|
||||||
isloading = false;
|
|
||||||
update();
|
update();
|
||||||
|
print(promoList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import '../../main.dart';
|
|||||||
import '../../onbording_page.dart';
|
import '../../onbording_page.dart';
|
||||||
import '../../views/auth/captin/login_captin.dart';
|
import '../../views/auth/captin/login_captin.dart';
|
||||||
import '../../views/home/Captin/home_captin.dart';
|
import '../../views/home/Captin/home_captin.dart';
|
||||||
import '../../views/home/map_page.dart';
|
import '../../views/home/map_page_passenger.dart';
|
||||||
|
|
||||||
class SplashScreenController extends GetxController
|
class SplashScreenController extends GetxController
|
||||||
with SingleGetTickerProviderMixin {
|
with SingleGetTickerProviderMixin {
|
||||||
@@ -48,7 +48,7 @@ class SplashScreenController extends GetxController
|
|||||||
box.read(BoxName.onBoarding) == null
|
box.read(BoxName.onBoarding) == null
|
||||||
? Get.off(() => OnBoardingPage())
|
? Get.off(() => OnBoardingPage())
|
||||||
: box.read(BoxName.email) != null
|
: box.read(BoxName.email) != null
|
||||||
? Get.off(() => const MapPage())
|
? Get.off(() => const MapPagePassenger())
|
||||||
: box.read(BoxName.emailDriver) == null
|
: box.read(BoxName.emailDriver) == null
|
||||||
? Get.off(() => LoginPage())
|
? Get.off(() => LoginPage())
|
||||||
: box.read(BoxName.emailDriver) != null
|
: box.read(BoxName.emailDriver) != null
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import 'package:ride/controller/functions/crud.dart';
|
|||||||
import 'package:ride/controller/home/map_passenger_controller.dart';
|
import 'package:ride/controller/home/map_passenger_controller.dart';
|
||||||
import 'package:ride/main.dart';
|
import 'package:ride/main.dart';
|
||||||
import 'package:ride/views/home/Captin/home_captin.dart';
|
import 'package:ride/views/home/Captin/home_captin.dart';
|
||||||
import 'package:ride/views/home/map_page.dart';
|
import 'package:ride/views/home/map_page_passenger.dart';
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
// import '../home/captin/home_captain_controller.dart';
|
// import '../home/captin/home_captain_controller.dart';
|
||||||
@@ -72,7 +72,7 @@ class RateController extends GetxController {
|
|||||||
'comment': comment.text,
|
'comment': comment.text,
|
||||||
}).then((value) {
|
}).then((value) {
|
||||||
Get.find<MapPassengerController>().restCounter();
|
Get.find<MapPassengerController>().restCounter();
|
||||||
Get.offAll(const MapPage());
|
Get.offAll(const MapPagePassenger());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ class HomePage extends StatelessWidget {
|
|||||||
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
|
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.to(() => Language());
|
Get.to(() => const Language());
|
||||||
},
|
},
|
||||||
title: Text(
|
title: Text(
|
||||||
'Language'.tr,
|
'Language'.tr,
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ import 'map_widget.dart/payment_method.page.dart';
|
|||||||
import 'map_widget.dart/timer_for_cancell_trip_from_passenger.dart';
|
import 'map_widget.dart/timer_for_cancell_trip_from_passenger.dart';
|
||||||
import 'map_widget.dart/timer_to_passenger_from_driver.dart';
|
import 'map_widget.dart/timer_to_passenger_from_driver.dart';
|
||||||
|
|
||||||
class MapPage extends StatelessWidget {
|
class MapPagePassenger extends StatelessWidget {
|
||||||
const MapPage({super.key});
|
const MapPagePassenger({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -49,48 +49,66 @@ GetBuilder<MapPassengerController> buttomSheetMapPage() {
|
|||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Padding(
|
SizedBox(
|
||||||
padding: const EdgeInsets.all(8.0),
|
width: Get.width * .15,
|
||||||
child: Image.asset(
|
child: Padding(
|
||||||
'assets/images/jeep.png',
|
padding: const EdgeInsets.all(8.0),
|
||||||
width: 50,
|
child: Image.asset(
|
||||||
fit: BoxFit.fill,
|
'assets/images/jeep.png',
|
||||||
repeat: ImageRepeat.repeatX,
|
width: 50,
|
||||||
|
fit: BoxFit.fill,
|
||||||
|
repeat: ImageRepeat.repeatX,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Column(
|
SizedBox(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
width: Get.width * .55,
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'${'Your Ride Duration is '.tr}${controller.duration} minutes'),
|
|
||||||
Text(
|
|
||||||
'${'You will be thier in'.tr} ${DateFormat('h:mm a').format(controller.newTime)}'),
|
|
||||||
Text(
|
|
||||||
'${'You trip distance is'.tr} ${controller.distance} KM')
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding:
|
|
||||||
const EdgeInsets.only(right: 5, left: 5),
|
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment:
|
crossAxisAlignment:
|
||||||
CrossAxisAlignment.center,
|
CrossAxisAlignment.start,
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
'${'Fee is'.tr} \n${controller.totalPassenger.toStringAsFixed(2)}',
|
'${'Your Ride Duration is '.tr}${controller.duration} minutes',
|
||||||
style: AppStyle.subtitle,
|
style: AppStyle.subtitle,
|
||||||
),
|
),
|
||||||
controller.promoTaken
|
Text(
|
||||||
? const Icon(
|
'${'You will be thier in'.tr} ${DateFormat('h:mm a').format(controller.newTime)}',
|
||||||
Icons.filter_vintage_rounded,
|
style: AppStyle.subtitle,
|
||||||
color: AppColor.redColor,
|
),
|
||||||
)
|
Text(
|
||||||
: const SizedBox(
|
'${'You trip distance is'.tr} ${controller.distance} KM',
|
||||||
height: 0,
|
style: AppStyle.subtitle,
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: Get.width * .2,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(
|
||||||
|
right: 5, left: 5),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'${'Fee is'.tr} \n${controller.totalPassenger.toStringAsFixed(2)}',
|
||||||
|
style: AppStyle.subtitle,
|
||||||
|
),
|
||||||
|
controller.promoTaken
|
||||||
|
? const Icon(
|
||||||
|
Icons.filter_vintage_rounded,
|
||||||
|
color: AppColor.redColor,
|
||||||
|
)
|
||||||
|
: const SizedBox(
|
||||||
|
height: 0,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -95,22 +95,48 @@ class MainBottomMenuMap extends StatelessWidget {
|
|||||||
mainAxisAlignment:
|
mainAxisAlignment:
|
||||||
MainAxisAlignment.center,
|
MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Text('Nearest Car for you about '.tr),
|
controller.noCarString == false
|
||||||
Container(
|
? Text(
|
||||||
decoration: BoxDecoration(
|
'Nearest Car for you about '.tr)
|
||||||
border: Border.all(
|
: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.circular(12),
|
||||||
color: AppColor.redColor,
|
color: AppColor.redColor,
|
||||||
width: 3)),
|
),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(4),
|
padding:
|
||||||
child: Text(
|
const EdgeInsets.all(6),
|
||||||
(controller.nearestCar != null
|
child: Text(
|
||||||
? controller
|
'No Car in your site. Sorry!'
|
||||||
.durationByPassenger
|
.tr,
|
||||||
.toString()
|
style: AppStyle.title
|
||||||
: 'N/A')),
|
.copyWith(
|
||||||
),
|
color: AppColor
|
||||||
),
|
.secondaryColor),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
controller.noCarString == false
|
||||||
|
? Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border.all(
|
||||||
|
color:
|
||||||
|
AppColor.redColor,
|
||||||
|
width: 3)),
|
||||||
|
child: Padding(
|
||||||
|
padding:
|
||||||
|
const EdgeInsets.all(4),
|
||||||
|
child: Text((controller
|
||||||
|
.nearestCar !=
|
||||||
|
null
|
||||||
|
? controller
|
||||||
|
.durationByPassenger
|
||||||
|
.toString()
|
||||||
|
: 'N/A')),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: const SizedBox(),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -3,8 +3,10 @@ import 'package:get/get.dart';
|
|||||||
import 'package:get/get_rx/src/rx_typedefs/rx_typedefs.dart';
|
import 'package:get/get_rx/src/rx_typedefs/rx_typedefs.dart';
|
||||||
import 'package:ride/constant/style.dart';
|
import 'package:ride/constant/style.dart';
|
||||||
import 'package:ride/views/home/my_wallet/passenger_wallet.dart';
|
import 'package:ride/views/home/my_wallet/passenger_wallet.dart';
|
||||||
|
import 'package:ride/views/home/profile/feed_back_page.dart';
|
||||||
import 'package:ride/views/home/profile/order_history.dart';
|
import 'package:ride/views/home/profile/order_history.dart';
|
||||||
import 'package:ride/views/home/profile/promos_passenger_page.dart';
|
import 'package:ride/views/home/profile/promos_passenger_page.dart';
|
||||||
|
import 'package:ride/views/home/profile/taarif_page.dart';
|
||||||
|
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../controller/home/map_passenger_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
@@ -120,7 +122,9 @@ class MapMenuWidget extends StatelessWidget {
|
|||||||
icon: Icons.history,
|
icon: Icons.history,
|
||||||
),
|
),
|
||||||
IconMainPageMap(
|
IconMainPageMap(
|
||||||
onTap: () {},
|
onTap: () {
|
||||||
|
Get.to(() => const TaarifPage());
|
||||||
|
},
|
||||||
title: 'Tariff',
|
title: 'Tariff',
|
||||||
icon: Icons.money,
|
icon: Icons.money,
|
||||||
),
|
),
|
||||||
@@ -160,7 +164,9 @@ class MapMenuWidget extends StatelessWidget {
|
|||||||
icon: Icons.settings,
|
icon: Icons.settings,
|
||||||
),
|
),
|
||||||
IconMainPageMap(
|
IconMainPageMap(
|
||||||
onTap: () {},
|
onTap: () {
|
||||||
|
Get.to(() => FeedBackPage());
|
||||||
|
},
|
||||||
title: 'Feed Back',
|
title: 'Feed Back',
|
||||||
icon: Icons.feedback,
|
icon: Icons.feedback,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:ride/views/home/map_page.dart';
|
import 'package:ride/views/home/map_page_passenger.dart';
|
||||||
|
|
||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/home/map_passenger_controller.dart';
|
import '../../../controller/home/map_passenger_controller.dart';
|
||||||
|
|||||||
@@ -328,12 +328,20 @@ class PassengerWallet extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Pay with Credit Card'.tr,
|
title: 'Pay with Credit Card'.tr,
|
||||||
onPressed: () => controller.makePaymentStripe(
|
onPressed: () {
|
||||||
controller.selectedAmount as int,
|
if (controller.selectedAmount != 0) {
|
||||||
'USD',
|
controller.makePaymentStripe(
|
||||||
() => Get.snackbar('Hi', '')),
|
controller.selectedAmount as int,
|
||||||
),
|
'USD',
|
||||||
|
() => Get.snackbar('Hi', ''));
|
||||||
|
} else {
|
||||||
|
Toast.show(
|
||||||
|
context,
|
||||||
|
'You will choose one of above !'.tr,
|
||||||
|
AppColor.redColor);
|
||||||
|
}
|
||||||
|
}),
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
title: 'Cancel'.tr,
|
title: 'Cancel'.tr,
|
||||||
kolor: AppColor.redColor,
|
kolor: AppColor.redColor,
|
||||||
|
|||||||
60
lib/views/home/profile/feed_back_page.dart
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:ride/controller/home/profile/feed_back_controller.dart';
|
||||||
|
import 'package:ride/views/widgets/my_scafold.dart';
|
||||||
|
import 'package:ride/views/widgets/mycircular.dart';
|
||||||
|
|
||||||
|
import '../../widgets/elevated_btn.dart';
|
||||||
|
|
||||||
|
class FeedBackPage extends StatelessWidget {
|
||||||
|
FeedBackPage({super.key});
|
||||||
|
FeedBackController feedBackController = Get.put(FeedBackController());
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return MyScafolld(
|
||||||
|
title: 'Feed Back'.tr,
|
||||||
|
body: [
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(26),
|
||||||
|
child: Form(
|
||||||
|
key: feedBackController.formKey,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
TextFormField(
|
||||||
|
controller: feedBackController.feedbackController,
|
||||||
|
decoration: const InputDecoration(
|
||||||
|
border: OutlineInputBorder(),
|
||||||
|
hintText: 'Enter your feedback here',
|
||||||
|
labelText: 'Feedback',
|
||||||
|
),
|
||||||
|
validator: (value) {
|
||||||
|
if (value == null || value.isEmpty) {
|
||||||
|
return 'Please enter your feedback.';
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
),
|
||||||
|
const SizedBox(height: 20),
|
||||||
|
feedBackController.isLoading
|
||||||
|
? const MyCircularProgressIndicator()
|
||||||
|
: MyElevatedButton(
|
||||||
|
onPressed: () {
|
||||||
|
if (feedBackController.formKey.currentState!
|
||||||
|
.validate()) {
|
||||||
|
feedBackController.addFeedBack();
|
||||||
|
|
||||||
|
// Clear the feedback form
|
||||||
|
feedBackController.formKey.currentState!.reset();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
title: 'Submit Feedback'.tr,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
isleading: true,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,7 +19,7 @@ class PromosPassengerPage extends StatelessWidget {
|
|||||||
isleading: true,
|
isleading: true,
|
||||||
body: [
|
body: [
|
||||||
GetBuilder<PromosController>(
|
GetBuilder<PromosController>(
|
||||||
builder: (orderHistoryController) => orderHistoryController.isloading
|
builder: (orderHistoryController) => orderHistoryController.isLoading
|
||||||
? const MyCircularProgressIndicator()
|
? const MyCircularProgressIndicator()
|
||||||
: ListView.builder(
|
: ListView.builder(
|
||||||
itemCount: orderHistoryController.promoList.length,
|
itemCount: orderHistoryController.promoList.length,
|
||||||
|
|||||||
73
lib/views/home/profile/taarif_page.dart
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:ride/constant/style.dart';
|
||||||
|
import 'package:ride/views/widgets/my_scafold.dart';
|
||||||
|
|
||||||
|
class TaarifPage extends StatelessWidget {
|
||||||
|
const TaarifPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return MyScafolld(isleading: true, title: 'Tariffs'.tr, body: [
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(horizontal: 4),
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
|
children: [
|
||||||
|
Table(
|
||||||
|
defaultVerticalAlignment: TableCellVerticalAlignment.middle,
|
||||||
|
border: TableBorder.symmetric(),
|
||||||
|
textBaseline: TextBaseline.alphabetic,
|
||||||
|
children: [
|
||||||
|
TableRow(
|
||||||
|
// decoration: AppStyle.boxDecoration,
|
||||||
|
children: [
|
||||||
|
Text('Minimum fare'.tr, style: AppStyle.title),
|
||||||
|
Text('1 USD', style: AppStyle.title),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
TableRow(
|
||||||
|
children: [
|
||||||
|
Text('Maximum fare'.tr, style: AppStyle.title),
|
||||||
|
Text('200 USD', style: AppStyle.title),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
TableRow(
|
||||||
|
children: [
|
||||||
|
Text('Flag-down fee'.tr, style: AppStyle.title),
|
||||||
|
Text('0.47 USD', style: AppStyle.title),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
TableRow(
|
||||||
|
children: [
|
||||||
|
Text('0.05 USD/min and 0.21 USD/km', style: AppStyle.title),
|
||||||
|
Text('Including Tax', style: AppStyle.title),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const SizedBox(height: 10),
|
||||||
|
Text('BookingFee'.tr, style: AppStyle.headtitle2),
|
||||||
|
const SizedBox(height: 10),
|
||||||
|
Text('4.17%', style: AppStyle.title),
|
||||||
|
const SizedBox(height: 20),
|
||||||
|
Text('Morning', style: AppStyle.headtitle2),
|
||||||
|
const SizedBox(height: 10),
|
||||||
|
Text('from 07:30 till 10:30 (Thursday, Friday, Saturday, Monday)',
|
||||||
|
style: AppStyle.title),
|
||||||
|
const SizedBox(height: 20),
|
||||||
|
Text('Evening', style: AppStyle.headtitle2),
|
||||||
|
const SizedBox(height: 10),
|
||||||
|
Text('from 12:00 till 15:00 (Thursday, Friday, Saturday, Monday)',
|
||||||
|
style: AppStyle.title),
|
||||||
|
const SizedBox(height: 20),
|
||||||
|
Text('Night', style: AppStyle.headtitle2),
|
||||||
|
const SizedBox(height: 10),
|
||||||
|
Text('from 23:59 till 05:30', style: AppStyle.title),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@ import 'package:ride/views/widgets/elevated_btn.dart';
|
|||||||
import '../../constant/box_name.dart';
|
import '../../constant/box_name.dart';
|
||||||
import '../../controller/local/local_controller.dart';
|
import '../../controller/local/local_controller.dart';
|
||||||
import '../auth/login_page.dart';
|
import '../auth/login_page.dart';
|
||||||
import '../home/map_page.dart';
|
import '../home/map_page_passenger.dart';
|
||||||
|
|
||||||
class Language extends StatelessWidget {
|
class Language extends StatelessWidget {
|
||||||
const Language({Key? key}) : super(key: key);
|
const Language({Key? key}) : super(key: key);
|
||||||
@@ -31,7 +31,7 @@ class Language extends StatelessWidget {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
controller.changeLang("ar");
|
controller.changeLang("ar");
|
||||||
box.read(BoxName.email) != null
|
box.read(BoxName.email) != null
|
||||||
? Get.offAll(() => const MapPage())
|
? Get.offAll(() => const MapPagePassenger())
|
||||||
: Get.offAll(() => LoginPage());
|
: Get.offAll(() => LoginPage());
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@@ -40,7 +40,7 @@ class Language extends StatelessWidget {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
controller.changeLang("en");
|
controller.changeLang("en");
|
||||||
box.read(BoxName.email) != null
|
box.read(BoxName.email) != null
|
||||||
? Get.offAll(() => const MapPage())
|
? Get.offAll(() => const MapPagePassenger())
|
||||||
: Get.offAll(() => LoginPage());
|
: Get.offAll(() => LoginPage());
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@@ -49,7 +49,7 @@ class Language extends StatelessWidget {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
controller.changeLang("tr");
|
controller.changeLang("tr");
|
||||||
box.read(BoxName.email) != null
|
box.read(BoxName.email) != null
|
||||||
? Get.offAll(() => const MapPage())
|
? Get.offAll(() => const MapPagePassenger())
|
||||||
: Get.offAll(() => LoginPage());
|
: Get.offAll(() => LoginPage());
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||