12/14/1
This commit is contained in:
@@ -55,6 +55,14 @@ class AppLink {
|
|||||||
static String getDriverPaymentPoints = "$ride/driverWallet/get.php";
|
static String getDriverPaymentPoints = "$ride/driverWallet/get.php";
|
||||||
static String getDriverpaymentToday = "$ride/payment/get.php";
|
static String getDriverpaymentToday = "$ride/payment/get.php";
|
||||||
static String getAllPaymentFromRide = "$ride/payment/getAllPayment.php";
|
static String getAllPaymentFromRide = "$ride/payment/getAllPayment.php";
|
||||||
|
|
||||||
|
//-----------------Passenger NotificationCaptain------------------
|
||||||
|
static String addNotificationPassenger =
|
||||||
|
"$ride/notificationPassenger/add.php";
|
||||||
|
static String getNotificationPassenger =
|
||||||
|
"$ride/notificationPassenger/get.php";
|
||||||
|
static String updateNotificationPassenger =
|
||||||
|
"$ride/notificationPassenger/update.php";
|
||||||
//-----------------Driver NotificationCaptain------------------
|
//-----------------Driver NotificationCaptain------------------
|
||||||
static String addNotificationCaptain = "$ride/notificationCaptain/add.php";
|
static String addNotificationCaptain = "$ride/notificationCaptain/add.php";
|
||||||
static String getNotificationCaptain = "$ride/notificationCaptain/get.php";
|
static String getNotificationCaptain = "$ride/notificationCaptain/get.php";
|
||||||
@@ -123,6 +131,7 @@ class AppLink {
|
|||||||
//==================Blog=============
|
//==================Blog=============
|
||||||
static String profile = '$server/ride/profile';
|
static String profile = '$server/ride/profile';
|
||||||
static String getprofile = "$profile/get.php";
|
static String getprofile = "$profile/get.php";
|
||||||
|
static String getCaptainProfile = "$profile/getCaptainProfile.php";
|
||||||
static String addprofile = "$profile/add.php";
|
static String addprofile = "$profile/add.php";
|
||||||
static String deleteprofile = "$profile/delete.php";
|
static String deleteprofile = "$profile/delete.php";
|
||||||
static String updateprofile = "$profile/update.php";
|
static String updateprofile = "$profile/update.php";
|
||||||
@@ -141,6 +150,7 @@ class AppLink {
|
|||||||
static String sendVerifyEmailCaptin = "$authCaptin/sendVerifyEmail.php";
|
static String sendVerifyEmailCaptin = "$authCaptin/sendVerifyEmail.php";
|
||||||
static String verifyEmailCaptin = "$authCaptin/verifyEmail.php";
|
static String verifyEmailCaptin = "$authCaptin/verifyEmail.php";
|
||||||
static String removeUser = "$authCaptin/removeAccount.php";
|
static String removeUser = "$authCaptin/removeAccount.php";
|
||||||
|
static String deletecaptainAccounr = "$authCaptin/deletecaptainAccounr.php";
|
||||||
static String updateAccountBank = "$authCaptin/updateAccountBank.php";
|
static String updateAccountBank = "$authCaptin/updateAccountBank.php";
|
||||||
static String getAccount = "$authCaptin/getAccount.php";
|
static String getAccount = "$authCaptin/getAccount.php";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import 'dart:math';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
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/auth/login_page.dart';
|
import 'package:ride/views/auth/login_page.dart';
|
||||||
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
import '../../views/auth/verify_email_page.dart';
|
import '../../views/auth/verify_email_page.dart';
|
||||||
|
|
||||||
@@ -29,26 +31,27 @@ class RegisterController extends GetxController {
|
|||||||
|
|
||||||
getBirthDate() {
|
getBirthDate() {
|
||||||
Get.defaultDialog(
|
Get.defaultDialog(
|
||||||
title: 'Select Date',
|
title: 'Select Date',
|
||||||
content: SizedBox(
|
titleStyle: AppStyle.title,
|
||||||
width: 300,
|
content: SizedBox(
|
||||||
child: CalendarDatePicker(
|
width: 300,
|
||||||
initialDate: DateTime.now().subtract(const Duration(days: 14 * 365)),
|
child: CalendarDatePicker(
|
||||||
firstDate: DateTime.parse('1940-06-01'),
|
initialDate:
|
||||||
lastDate: DateTime.now().subtract(const Duration(days: 14 * 365)),
|
DateTime.now().subtract(const Duration(days: 14 * 365)),
|
||||||
onDateChanged: (date) {
|
firstDate: DateTime.parse('1940-06-01'),
|
||||||
// Get the selected date and convert it to a DateTime object
|
lastDate: DateTime.now().subtract(const Duration(days: 14 * 365)),
|
||||||
DateTime dateTime = date;
|
onDateChanged: (date) {
|
||||||
// Call the getOrders() function from the controller
|
// Get the selected date and convert it to a DateTime object
|
||||||
birthDate = dateTime.toString().split(' ')[0];
|
DateTime dateTime = date;
|
||||||
update();
|
// Call the getOrders() function from the controller
|
||||||
Get.back();
|
birthDate = dateTime.toString().split(' ')[0];
|
||||||
},
|
update();
|
||||||
|
},
|
||||||
|
|
||||||
// onDateChanged: (DateTime value) {},
|
// onDateChanged: (DateTime value) {},
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
confirm: MyElevatedButton(title: 'Ok'.tr, onPressed: () => Get.back()));
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void changeGender(String value) {
|
void changeGender(String value) {
|
||||||
@@ -75,7 +78,7 @@ class RegisterController extends GetxController {
|
|||||||
'email': emailController.text.toString(),
|
'email': emailController.text.toString(),
|
||||||
'phone': phoneController.text.toString(),
|
'phone': phoneController.text.toString(),
|
||||||
'password': passwordController.text.toString(),
|
'password': passwordController.text.toString(),
|
||||||
'gender': gender,
|
'gender': 'yet',
|
||||||
'site': siteController.text,
|
'site': siteController.text,
|
||||||
'birthdate': birthDate,
|
'birthdate': birthDate,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,24 +1,81 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/src/widgets/basic.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.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/colors.dart';
|
||||||
import 'package:ride/constant/links.dart';
|
import 'package:ride/constant/links.dart';
|
||||||
import 'package:ride/controller/functions/crud.dart';
|
import 'package:ride/controller/functions/crud.dart';
|
||||||
import 'package:ride/main.dart';
|
import 'package:ride/main.dart';
|
||||||
|
import 'package:ride/onbording_page.dart';
|
||||||
import 'package:ride/views/lang/languages.dart';
|
import 'package:ride/views/lang/languages.dart';
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
import 'package:ride/views/widgets/my_textField.dart';
|
||||||
|
|
||||||
import '../../constant/style.dart';
|
import '../../constant/style.dart';
|
||||||
|
|
||||||
class LogOut {
|
class LogOut {
|
||||||
|
TextEditingController checkTxtController = TextEditingController();
|
||||||
|
final formKey = GlobalKey<FormState>();
|
||||||
Future deleteMyAccount(String id) async {
|
Future deleteMyAccount(String id) async {
|
||||||
await CRUD().post(link: AppLink.removeUser, payload: {'id': id}).then(
|
await CRUD().post(link: AppLink.removeUser, payload: {'id': id}).then(
|
||||||
(value) => Get.snackbar('Deleted', 'Your Account is Deleted',
|
(value) => Get.snackbar('Deleted', 'Your Account is Deleted',
|
||||||
backgroundColor: AppColor.redColor));
|
backgroundColor: AppColor.redColor));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future logOut() async {
|
checkBeforeDelete() async {
|
||||||
|
var res = await CRUD().post(
|
||||||
|
link: AppLink.deletecaptainAccounr,
|
||||||
|
payload: {'id': box.read(BoxName.driverID)}).then((value) => exit(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
deletecaptainAccount() {
|
||||||
|
Get.defaultDialog(
|
||||||
|
backgroundColor: AppColor.yellowColor,
|
||||||
|
title: 'Are you sure to delete your account?'.tr,
|
||||||
|
middleText:
|
||||||
|
'Your data will be erased after 2 weeks\nAnd you will can\'t return to use app after 1 month ',
|
||||||
|
titleStyle: AppStyle.title,
|
||||||
|
content: Column(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: Get.width,
|
||||||
|
decoration: AppStyle.boxDecoration,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Text(
|
||||||
|
'Your data will be erased after 2 weeks\nAnd you will can\'t return to use app after 1 month'
|
||||||
|
.tr,
|
||||||
|
style: AppStyle.title.copyWith(color: AppColor.redColor),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
Form(
|
||||||
|
key: formKey,
|
||||||
|
child: SizedBox(
|
||||||
|
width: Get.width,
|
||||||
|
child: MyTextForm(
|
||||||
|
controller: checkTxtController,
|
||||||
|
label: 'Enter Your First Name'.tr,
|
||||||
|
hint: 'Enter Your First Name'.tr,
|
||||||
|
type: TextInputType.name,
|
||||||
|
),
|
||||||
|
))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
confirm: MyElevatedButton(
|
||||||
|
title: 'Delete'.tr,
|
||||||
|
onPressed: () {
|
||||||
|
if (checkTxtController.text == box.read(BoxName.nameDriver)) {
|
||||||
|
deletecaptainAccount();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future logOutPassenger() async {
|
||||||
Get.defaultDialog(
|
Get.defaultDialog(
|
||||||
title: 'Are you Sure to LogOut?'.tr,
|
title: 'Are you Sure to LogOut?'.tr,
|
||||||
content: Row(
|
content: Row(
|
||||||
@@ -42,7 +99,54 @@ class LogOut {
|
|||||||
box.remove(BoxName.phone);
|
box.remove(BoxName.phone);
|
||||||
box.remove(BoxName.tokenFCM);
|
box.remove(BoxName.tokenFCM);
|
||||||
box.remove(BoxName.tokens);
|
box.remove(BoxName.tokens);
|
||||||
Get.offAll(const Language());
|
Get.offAll(OnBoardingPage());
|
||||||
|
},
|
||||||
|
child: Text(
|
||||||
|
'Sign Out'.tr,
|
||||||
|
style:
|
||||||
|
AppStyle.title.copyWith(color: AppColor.secondaryColor),
|
||||||
|
))
|
||||||
|
],
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future logOutCaptain() async {
|
||||||
|
Get.defaultDialog(
|
||||||
|
title: 'Are you Sure to LogOut?'.tr,
|
||||||
|
titleStyle: AppStyle.title,
|
||||||
|
content: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
children: [
|
||||||
|
MyElevatedButton(
|
||||||
|
title: 'Cancel'.tr,
|
||||||
|
onPressed: () => Get.back(),
|
||||||
|
),
|
||||||
|
ElevatedButton(
|
||||||
|
style: ButtonStyle(
|
||||||
|
backgroundColor: MaterialStateProperty.all(AppColor.redColor),
|
||||||
|
),
|
||||||
|
onPressed: () {
|
||||||
|
// box.remove(BoxName.agreeTerms);
|
||||||
|
box.remove(BoxName.driverID);
|
||||||
|
box.remove(BoxName.sexDriver);
|
||||||
|
box.remove(BoxName.dobDriver);
|
||||||
|
box.remove(BoxName.nameDriver);
|
||||||
|
box.remove(BoxName.emailDriver);
|
||||||
|
box.remove(BoxName.phoneDriver);
|
||||||
|
box.remove(BoxName.statusDriverLocation);
|
||||||
|
box.remove(BoxName.cvvCodeDriver);
|
||||||
|
box.remove(BoxName.lastNameDriver);
|
||||||
|
box.remove(BoxName.passwordDriver);
|
||||||
|
box.remove(BoxName.cardNumberDriver);
|
||||||
|
box.remove(BoxName.expiryDateDriver);
|
||||||
|
box.remove(BoxName.cardHolderNameDriver);
|
||||||
|
box.remove(BoxName.vin);
|
||||||
|
box.remove(BoxName.make);
|
||||||
|
box.remove(BoxName.year);
|
||||||
|
box.remove(BoxName.owner);
|
||||||
|
box.remove(BoxName.onBoarding);
|
||||||
|
box.remove(BoxName.agreeTerms);
|
||||||
|
Get.offAll(OnBoardingPage());
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
'Sign Out'.tr,
|
'Sign Out'.tr,
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import 'package:get/get.dart';
|
|||||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
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/colors.dart';
|
||||||
|
import 'package:ride/constant/style.dart';
|
||||||
import 'package:ride/views/home/map_page_passenger.dart';
|
import 'package:ride/views/home/map_page_passenger.dart';
|
||||||
import '../../constant/api_key.dart';
|
import '../../constant/api_key.dart';
|
||||||
import '../../constant/box_name.dart';
|
import '../../constant/box_name.dart';
|
||||||
@@ -273,77 +275,88 @@ class MapPassengerController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
changeConfirmRide() async {
|
changeConfirmRide() async {
|
||||||
PaymentController paymentController = Get.find<PaymentController>();
|
if (dataCarsLocationByPassenger != 'failure') {
|
||||||
rideConfirm = true;
|
driverToken =
|
||||||
shouldFetch = true;
|
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString();
|
||||||
isBottomSheetShown = false;
|
PaymentController paymentController = Get.find<PaymentController>();
|
||||||
timeToPassengerFromDriverAfterApplied = 60;
|
rideConfirm = true;
|
||||||
driverToken =
|
shouldFetch = true;
|
||||||
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString();
|
isBottomSheetShown = false;
|
||||||
update();
|
timeToPassengerFromDriverAfterApplied = 60;
|
||||||
// print('rideConfirm= $rideConfirm');
|
|
||||||
|
|
||||||
await getCarsLocationByPassenger();
|
|
||||||
await CRUD().post(link: AppLink.addRides, payload: {
|
|
||||||
"start_location": //'${data[0]['start_address']}',
|
|
||||||
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
|
|
||||||
"end_location": //'${data[0]['end_address']}',
|
|
||||||
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
|
|
||||||
"date": DateTime.now().toString(),
|
|
||||||
"time": DateTime.now().toString(),
|
|
||||||
"endtime": durationToAdd.toString(),
|
|
||||||
"price": totalPassenger.toString(),
|
|
||||||
"passenger_id": box.read(BoxName.passengerID).toString(),
|
|
||||||
"driver_id": dataCarsLocationByPassenger['message'][carsOrder]
|
|
||||||
['driver_id']
|
|
||||||
.toString(),
|
|
||||||
"status": "waiting",
|
|
||||||
"price_for_driver": totalDriver.toString(),
|
|
||||||
"price_for_passenger": totalME.toString(),
|
|
||||||
"distance": distance.toString()
|
|
||||||
}).then((value) {
|
|
||||||
// print(jsonDecode(value)['message']);
|
|
||||||
// List<String> body = [
|
|
||||||
rideId = jsonDecode(value)['message'];
|
|
||||||
List<String> body = [
|
|
||||||
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
|
|
||||||
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
|
|
||||||
totalPassenger.toString(),
|
|
||||||
totalDriver.toString(),
|
|
||||||
duration.toString(),
|
|
||||||
distance.toString(),
|
|
||||||
dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
|
|
||||||
.toString(),
|
|
||||||
box.read(BoxName.passengerID).toString(),
|
|
||||||
box.read(BoxName.name).toString(),
|
|
||||||
box.read(BoxName.tokenFCM).toString(),
|
|
||||||
box.read(BoxName.phone).toString(),
|
|
||||||
durationByPassenger.toString(),
|
|
||||||
distanceByPassenger.toString(),
|
|
||||||
paymentController.isWalletChecked.toString(),
|
|
||||||
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
|
|
||||||
duration1.toString(),
|
|
||||||
rideId,
|
|
||||||
rideTimerBegin.toString(),
|
|
||||||
dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
|
|
||||||
.toString(),
|
|
||||||
durationToRide.toString()
|
|
||||||
];
|
|
||||||
FirebaseMessagesController().sendNotificationToDriverMAP(
|
|
||||||
'Order',
|
|
||||||
jsonDecode(value)['message'].toString(),
|
|
||||||
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
|
|
||||||
body,
|
|
||||||
);
|
|
||||||
// print(dataCarsLocationByPassenger);
|
|
||||||
// print(dataCarsLocationByPassenger['message'][0]['token'].toString());
|
|
||||||
});
|
|
||||||
delayAndFetchRideStatus(rideId);
|
|
||||||
if (shouldFetch == false) {
|
|
||||||
startTimer();
|
|
||||||
update();
|
update();
|
||||||
|
// print('rideConfirm= $rideConfirm');
|
||||||
|
|
||||||
|
await getCarsLocationByPassenger();
|
||||||
|
await CRUD().post(link: AppLink.addRides, payload: {
|
||||||
|
"start_location": //'${data[0]['start_address']}',
|
||||||
|
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
|
||||||
|
"end_location": //'${data[0]['end_address']}',
|
||||||
|
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
|
||||||
|
"date": DateTime.now().toString(),
|
||||||
|
"time": DateTime.now().toString(),
|
||||||
|
"endtime": durationToAdd.toString(),
|
||||||
|
"price": totalPassenger.toString(),
|
||||||
|
"passenger_id": box.read(BoxName.passengerID).toString(),
|
||||||
|
"driver_id": dataCarsLocationByPassenger['message'][carsOrder]
|
||||||
|
['driver_id']
|
||||||
|
.toString(),
|
||||||
|
"status": "waiting",
|
||||||
|
"price_for_driver": totalDriver.toString(),
|
||||||
|
"price_for_passenger": totalME.toString(),
|
||||||
|
"distance": distance.toString()
|
||||||
|
}).then((value) {
|
||||||
|
// print(jsonDecode(value)['message']);
|
||||||
|
// List<String> body = [
|
||||||
|
rideId = jsonDecode(value)['message'];
|
||||||
|
List<String> body = [
|
||||||
|
'${data[0]["start_location"]['lat']},${data[0]["start_location"]['lng']}',
|
||||||
|
'${data[0]["end_location"]['lat']},${data[0]["end_location"]['lng']}',
|
||||||
|
totalPassenger.toString(),
|
||||||
|
totalDriver.toString(),
|
||||||
|
duration.toString(),
|
||||||
|
distance.toString(),
|
||||||
|
dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
|
||||||
|
.toString(),
|
||||||
|
box.read(BoxName.passengerID).toString(),
|
||||||
|
box.read(BoxName.name).toString(),
|
||||||
|
box.read(BoxName.tokenFCM).toString(),
|
||||||
|
box.read(BoxName.phone).toString(),
|
||||||
|
durationByPassenger.toString(),
|
||||||
|
distanceByPassenger.toString(),
|
||||||
|
paymentController.isWalletChecked.toString(),
|
||||||
|
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
|
||||||
|
duration1.toString(),
|
||||||
|
rideId,
|
||||||
|
rideTimerBegin.toString(),
|
||||||
|
dataCarsLocationByPassenger['message'][carsOrder]['driver_id']
|
||||||
|
.toString(),
|
||||||
|
durationToRide.toString()
|
||||||
|
];
|
||||||
|
FirebaseMessagesController().sendNotificationToDriverMAP(
|
||||||
|
'Order',
|
||||||
|
jsonDecode(value)['message'].toString(),
|
||||||
|
dataCarsLocationByPassenger['message'][carsOrder]['token'].toString(),
|
||||||
|
body,
|
||||||
|
);
|
||||||
|
// print(dataCarsLocationByPassenger);
|
||||||
|
// print(dataCarsLocationByPassenger['message'][0]['token'].toString());
|
||||||
|
});
|
||||||
|
delayAndFetchRideStatus(rideId);
|
||||||
|
if (shouldFetch == false) {
|
||||||
|
startTimer();
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
update();
|
||||||
|
} else {
|
||||||
|
Get.defaultDialog(
|
||||||
|
title: 'No Car or Captain Found in your area.'.tr,
|
||||||
|
titleStyle: AppStyle.title,
|
||||||
|
middleText: 'Please Try anther time '.tr,
|
||||||
|
middleTextStyle: AppStyle.title.copyWith(color: AppColor.yellowColor),
|
||||||
|
confirm:
|
||||||
|
MyElevatedButton(title: 'Ok'.tr, onPressed: () => Get.back()));
|
||||||
}
|
}
|
||||||
update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void delayAndFetchRideStatus(String rideId) {
|
void delayAndFetchRideStatus(String rideId) {
|
||||||
@@ -446,6 +459,7 @@ class MapPassengerController extends GetxController {
|
|||||||
});
|
});
|
||||||
if (res == 'failure') {
|
if (res == 'failure') {
|
||||||
noCarString = true;
|
noCarString = true;
|
||||||
|
dataCarsLocationByPassenger = res;
|
||||||
update();
|
update();
|
||||||
// Get.snackbar('No Car in your site.Sorry!'.tr, '',
|
// Get.snackbar('No Car in your site.Sorry!'.tr, '',
|
||||||
// backgroundColor: AppColor.redColor);
|
// backgroundColor: AppColor.redColor);
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import 'package:ride/constant/style.dart';
|
|||||||
import 'package:ride/constant/table_names.dart';
|
import 'package:ride/constant/table_names.dart';
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
|
|
||||||
import '../../../constant/box_name.dart';
|
import '../../constant/box_name.dart';
|
||||||
import '../../../constant/links.dart';
|
import '../../constant/links.dart';
|
||||||
import '../../../main.dart';
|
import '../../main.dart';
|
||||||
import '../../functions/crud.dart';
|
import '../functions/crud.dart';
|
||||||
|
|
||||||
class NotificationCaptainController extends GetxController {
|
class NotificationCaptainController extends GetxController {
|
||||||
bool isloading = false;
|
bool isloading = false;
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:ride/controller/firebase/firbase_messge.dart';
|
||||||
|
|
||||||
|
import '../../constant/box_name.dart';
|
||||||
|
import '../../constant/links.dart';
|
||||||
|
import '../../constant/style.dart';
|
||||||
|
import '../../main.dart';
|
||||||
|
import '../../views/widgets/elevated_btn.dart';
|
||||||
|
import '../functions/crud.dart';
|
||||||
|
|
||||||
|
class PassengerNotificationController extends GetxController {
|
||||||
|
bool isloading = false;
|
||||||
|
Map notificationData = {};
|
||||||
|
|
||||||
|
getNotifications() async {
|
||||||
|
isloading = true;
|
||||||
|
update();
|
||||||
|
var res = await CRUD().get(
|
||||||
|
link: AppLink.getNotificationPassenger,
|
||||||
|
payload: {'passenger_id': box.read(BoxName.passengerID)});
|
||||||
|
if (res == "failure") {
|
||||||
|
// print(res);
|
||||||
|
Get.defaultDialog(
|
||||||
|
title: 'There is no notification yet'.tr,
|
||||||
|
titleStyle: AppStyle.title,
|
||||||
|
middleText: '',
|
||||||
|
confirm: MyElevatedButton(
|
||||||
|
title: 'Back',
|
||||||
|
onPressed: () {
|
||||||
|
Get.back();
|
||||||
|
Get.back();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
notificationData = jsonDecode(res);
|
||||||
|
// sql.insertData(notificationData['message'], TableName.captainNotification);
|
||||||
|
|
||||||
|
// print(notificationData);
|
||||||
|
isloading = false;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
updateNotification(String id) async {
|
||||||
|
await CRUD().post(
|
||||||
|
link: AppLink.updateNotificationPassenger,
|
||||||
|
payload: {'isShown': 'true', 'id': id},
|
||||||
|
);
|
||||||
|
Get.back();
|
||||||
|
getNotifications();
|
||||||
|
}
|
||||||
|
|
||||||
|
addNotificationToPassenger(String title, body) async {
|
||||||
|
var res = CRUD().post(link: AppLink.addNotificationPassenger, payload: {
|
||||||
|
'title': title,
|
||||||
|
'body': body,
|
||||||
|
});
|
||||||
|
FirebaseMessagesController()
|
||||||
|
.sendNotificationToPassengerToken(title, body, 'token', []);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onInit() {
|
||||||
|
getNotifications();
|
||||||
|
super.onInit();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ import 'dart:convert';
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:http/http.dart';
|
||||||
import 'package:ride/constant/box_name.dart';
|
import 'package:ride/constant/box_name.dart';
|
||||||
import 'package:ride/constant/links.dart';
|
import 'package:ride/constant/links.dart';
|
||||||
import 'package:ride/controller/functions/crud.dart';
|
import 'package:ride/controller/functions/crud.dart';
|
||||||
@@ -38,4 +39,28 @@ class CaptainProfileController extends GetxController {
|
|||||||
Get.back();
|
Get.back();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Map captainProfileData = {};
|
||||||
|
Future getProfileData() async {
|
||||||
|
var res = await CRUD().get(
|
||||||
|
link: AppLink.getCaptainProfile,
|
||||||
|
payload: {'id': box.read(BoxName.driverID)});
|
||||||
|
if (res != 'failure') {
|
||||||
|
var d = jsonDecode(res);
|
||||||
|
captainProfileData = d['message'];
|
||||||
|
update();
|
||||||
|
print(d['message']);
|
||||||
|
box.write(BoxName.sexDriver, d['message']['gender']);
|
||||||
|
box.write(BoxName.dobDriver, d['message']['birthdate']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onInit() {
|
||||||
|
if (box.read(BoxName.dobDriver).toString().isEmpty) {
|
||||||
|
getProfileData();
|
||||||
|
}
|
||||||
|
|
||||||
|
super.onInit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import 'package:animated_text_kit/animated_text_kit.dart';
|
import 'package:animated_text_kit/animated_text_kit.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_stripe/flutter_stripe.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:ride/constant/colors.dart';
|
import 'package:ride/constant/colors.dart';
|
||||||
import 'package:ride/constant/info.dart';
|
import 'package:ride/constant/info.dart';
|
||||||
|
|||||||
@@ -1,18 +1,11 @@
|
|||||||
import 'dart:convert';
|
|
||||||
|
|
||||||
import 'package:animated_text_kit/animated_text_kit.dart';
|
import 'package:animated_text_kit/animated_text_kit.dart';
|
||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.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';
|
||||||
import 'package:ride/controller/functions/llama_ai.dart';
|
|
||||||
import 'package:ride/env/env.dart';
|
|
||||||
|
|
||||||
import '../../../constant/api_key.dart';
|
|
||||||
import '../../../constant/box_name.dart';
|
import '../../../constant/box_name.dart';
|
||||||
import '../../../constant/char_map.dart';
|
|
||||||
import '../../../constant/colors.dart';
|
import '../../../constant/colors.dart';
|
||||||
import '../../../constant/credential.dart';
|
|
||||||
import '../../../constant/info.dart';
|
import '../../../constant/info.dart';
|
||||||
import '../../../constant/style.dart';
|
import '../../../constant/style.dart';
|
||||||
import '../../../controller/auth/captin/login_captin_controller.dart';
|
import '../../../controller/auth/captin/login_captin_controller.dart';
|
||||||
@@ -197,62 +190,62 @@ class LoginCaptin extends StatelessWidget {
|
|||||||
displayFullTextOnTap: true,
|
displayFullTextOnTap: true,
|
||||||
stopPauseOnTap: true,
|
stopPauseOnTap: true,
|
||||||
),
|
),
|
||||||
IconButton(
|
// IconButton(
|
||||||
onPressed: () async {
|
// onPressed: () async {
|
||||||
// String v =
|
// // String v =
|
||||||
// await storage.read(key: BoxName.serverAPI) ?? '';
|
// // await storage.read(key: BoxName.serverAPI) ?? '';
|
||||||
// print(v);
|
// // print(v);
|
||||||
// sql.deleteAllData(TableName.faceDetectTimes);
|
// // sql.deleteAllData(TableName.faceDetectTimes);
|
||||||
AC credentials = AC();
|
// AC credentials = AC();
|
||||||
// String apiKey = AK.secretKey;
|
// // String apiKey = AK.secretKey;
|
||||||
// // // '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';
|
// // // // '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';
|
||||||
// credentials.gAK();
|
// // credentials.gAK();
|
||||||
// String? apiKeyf =
|
// // String? apiKeyf =
|
||||||
// await storage.read(key: BoxName.chatGPTkey);
|
// // await storage.read(key: BoxName.chatGPTkey);
|
||||||
// print(apiKeyf);
|
// // print(apiKeyf);
|
||||||
// String convertedString = credentials.c(apiKey, s);
|
// // String convertedString = credentials.c(apiKey, s);
|
||||||
// String convertedStrings = credentials.c(apiKey, s);
|
// // String convertedStrings = credentials.c(apiKey, s);
|
||||||
// print('Converted String s: $convertedStrings');
|
// // print('Converted String s: $convertedStrings');
|
||||||
// String convertedStringC =
|
// // String convertedStringC =
|
||||||
// credentials.c(convertedStrings, c);
|
// // credentials.c(convertedStrings, c);
|
||||||
// print('v: $v');
|
// // print('v: $v');
|
||||||
// 'AAAAinYllCo:APA91bF1shTpzSsSxqbfY6c60D8zs1ZsdIsl9ix6nl7GDdjCqWPRK0G0ub5SqFdb1jDpQDvQPxGg-697MWLo0sy3oYImBwBLObyhk0GjtNzyr0PbE3hI-pOvhf8Vp1xgUgBmofbZYXkH'
|
// // 'AAAAinYllCo:APA91bF1shTpzSsSxqbfY6c60D8zs1ZsdIsl9ix6nl7GDdjCqWPRK0G0ub5SqFdb1jDpQDvQPxGg-697MWLo0sy3oYImBwBLObyhk0GjtNzyr0PbE3hI-pOvhf8Vp1xgUgBmofbZYXkH'
|
||||||
// 'AAAAinYllCo:APA91bF1shTpzSsSxqbfY6c60D8zs1ZsdIsl9ix6nl7GDdjCqWPRK0G0ub5SqFdb1jDpQDvQPxGg-697MWLo0sy3oYImBwBLObyhk0GjtNzyr0PbE3hI-pOvhf8Vp1xgUgBmofbZYXkH'
|
// // 'AAAAinYllCo:APA91bF1shTpzSsSxqbfY6c60D8zs1ZsdIsl9ix6nl7GDdjCqWPRK0G0ub5SqFdb1jDpQDvQPxGg-697MWLo0sy3oYImBwBLObyhk0GjtNzyr0PbE3hI-pOvhf8Vp1xgUgBmofbZYXkH'
|
||||||
String convertedStringN = credentials.c(
|
// String convertedStringN = credentials.c(
|
||||||
credentials.c(
|
// credentials.c(
|
||||||
credentials.c(
|
// credentials.c(
|
||||||
'0vQRyaYYDWpsv73A5CZOknseK7S2sgwE', cs),
|
// '0vQRyaYYDWpsv73A5CZOknseK7S2sgwE', cs),
|
||||||
cC),
|
// cC),
|
||||||
cn);
|
// cn);
|
||||||
print('Converted v: $convertedStringN');
|
// print('Converted v: $convertedStringN');
|
||||||
// //
|
// // //
|
||||||
// String retrievedStringN =
|
// // String retrievedStringN =
|
||||||
// credentials.r(convertedStringN, n);
|
// // credentials.r(convertedStringN, n);
|
||||||
// print('Retrieved String: $retrievedStringN');
|
// // print('Retrieved String: $retrievedStringN');
|
||||||
// String retrievedStringC =
|
// // String retrievedStringC =
|
||||||
// credentials.r(retrievedStringN, c);
|
// // credentials.r(retrievedStringN, c);
|
||||||
// print('Retrieved String: $retrievedStringC');
|
// // print('Retrieved String: $retrievedStringC');
|
||||||
|
|
||||||
String retrievedStringS = credentials.r(
|
// String retrievedStringS = credentials.r(
|
||||||
credentials.r(
|
// credentials.r(
|
||||||
credentials.r(convertedStringN, cn), cC),
|
// credentials.r(convertedStringN, cn), cC),
|
||||||
cs);
|
// cs);
|
||||||
print('Retrieved String: $retrievedStringS');
|
// print('Retrieved String: $retrievedStringS');
|
||||||
|
|
||||||
// if (retrievedStringS == apiKey) {
|
// // if (retrievedStringS == apiKey) {
|
||||||
// print('same');
|
// // print('same');
|
||||||
// }
|
// // }
|
||||||
// print(' AK is ' + AK.chatGPTkey); //
|
// // print(' AK is ' + AK.chatGPTkey); //
|
||||||
|
|
||||||
// print(' ENV is ' + Env.chatGPTkey); //
|
// // print(' ENV is ' + Env.chatGPTkey); //
|
||||||
// // print('storage is ' + v); //
|
// // // print('storage is ' + v); //
|
||||||
// print('storage is ' + apiKeyf!); //
|
// // print('storage is ' + apiKeyf!); //
|
||||||
},
|
// },
|
||||||
icon: const Icon(
|
// icon: const Icon(
|
||||||
Icons.close,
|
// Icons.close,
|
||||||
color: AppColor.blueColor,
|
// color: AppColor.blueColor,
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:ride/constant/colors.dart';
|
||||||
|
import 'package:ride/controller/functions/log_out.dart';
|
||||||
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
import 'package:ride/views/widgets/my_scafold.dart';
|
import 'package:ride/views/widgets/my_scafold.dart';
|
||||||
|
|
||||||
class LogoutCaptain extends StatelessWidget {
|
class LogoutCaptain extends StatelessWidget {
|
||||||
@@ -9,7 +12,30 @@ class LogoutCaptain extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MyScafolld(
|
return MyScafolld(
|
||||||
title: 'Log Out Page'.tr,
|
title: 'Log Out Page'.tr,
|
||||||
body: [],
|
body: [
|
||||||
|
Center(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
MyElevatedButton(
|
||||||
|
title: 'Log Off'.tr,
|
||||||
|
onPressed: () {
|
||||||
|
LogOut().logOutCaptain();
|
||||||
|
}),
|
||||||
|
const SizedBox(
|
||||||
|
height: 30,
|
||||||
|
),
|
||||||
|
MyElevatedButton(
|
||||||
|
title: 'Delete My Account'.tr,
|
||||||
|
onPressed: () {
|
||||||
|
LogOut().deletecaptainAccount();
|
||||||
|
},
|
||||||
|
kolor: AppColor.redColor,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
isleading: true,
|
isleading: true,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -257,22 +257,26 @@ class RegisterPage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
DropdownButton(
|
// DropdownButton(
|
||||||
value: controller.gender,
|
// value: controller.gender,
|
||||||
items: [
|
// items: [
|
||||||
DropdownMenuItem(
|
// DropdownMenuItem(
|
||||||
value: 'Male'.tr,
|
// value: 'Male'.tr,
|
||||||
child: Text('Male'.tr),
|
// child: Text('Male'.tr),
|
||||||
),
|
// ),
|
||||||
DropdownMenuItem(
|
// DropdownMenuItem(
|
||||||
value: 'Female'.tr,
|
// value: 'Female'.tr,
|
||||||
child: Text('Female'.tr),
|
// child: Text('Female'.tr),
|
||||||
),
|
// ),
|
||||||
],
|
// DropdownMenuItem(
|
||||||
onChanged: (value) {
|
// value: '--'.tr,
|
||||||
controller.changeGender(value!);
|
// child: Text('--'.tr),
|
||||||
},
|
// ),
|
||||||
)
|
// ],
|
||||||
|
// onChanged: (value) {
|
||||||
|
// controller.changeGender(value!);
|
||||||
|
// },
|
||||||
|
// )
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
MyElevatedButton(
|
MyElevatedButton(
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:ride/constant/style.dart';
|
||||||
|
import 'package:ride/views/lang/languages.dart';
|
||||||
import 'package:ride/views/widgets/my_scafold.dart';
|
import 'package:ride/views/widgets/my_scafold.dart';
|
||||||
|
|
||||||
class SettingsCaptain extends StatelessWidget {
|
class SettingsCaptain extends StatelessWidget {
|
||||||
@@ -9,7 +11,31 @@ class SettingsCaptain extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MyScafolld(
|
return MyScafolld(
|
||||||
title: 'Settings'.tr,
|
title: 'Settings'.tr,
|
||||||
body: [],
|
body: [
|
||||||
|
ListView(
|
||||||
|
children: <Widget>[
|
||||||
|
ListTile(
|
||||||
|
leading: const Icon(Icons.language),
|
||||||
|
title: Text(
|
||||||
|
'Language',
|
||||||
|
style: AppStyle.headtitle2,
|
||||||
|
),
|
||||||
|
onTap: () => Get.to(const Language()),
|
||||||
|
),
|
||||||
|
// ListTile(
|
||||||
|
// leading: const Icon(Icons.notifications),
|
||||||
|
// title: const Text('Notifications'),
|
||||||
|
// onTap: () =>
|
||||||
|
// Navigator.pushNamed(context, '/notification-settings'),
|
||||||
|
// ),
|
||||||
|
// ListTile(
|
||||||
|
// leading: const Icon(Icons.account_circle),
|
||||||
|
// title: const Text('Account'),
|
||||||
|
// onTap: () => Navigator.pushNamed(context, '/account-settings'),
|
||||||
|
// ),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
isleading: true,
|
isleading: true,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ class PassengerProfilePage extends StatelessWidget {
|
|||||||
child: MyElevatedButton(
|
child: MyElevatedButton(
|
||||||
title: 'Sign Out'.tr,
|
title: 'Sign Out'.tr,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
LogOut().logOut();
|
LogOut().logOutPassenger();
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:ride/constant/style.dart';
|
import 'package:ride/constant/style.dart';
|
||||||
import 'package:ride/controller/auth/captin/notification_captain_controller.dart';
|
import 'package:ride/controller/notification/notification_captain_controller.dart';
|
||||||
import 'package:ride/views/widgets/elevated_btn.dart';
|
import 'package:ride/views/widgets/elevated_btn.dart';
|
||||||
import 'package:ride/views/widgets/my_scafold.dart';
|
import 'package:ride/views/widgets/my_scafold.dart';
|
||||||
import 'package:ride/views/widgets/mycircular.dart';
|
import 'package:ride/views/widgets/mycircular.dart';
|
||||||
|
|||||||
@@ -3,35 +3,80 @@ import 'package:get/get.dart';
|
|||||||
import 'package:ride/constant/colors.dart';
|
import 'package:ride/constant/colors.dart';
|
||||||
import 'package:ride/constant/style.dart';
|
import 'package:ride/constant/style.dart';
|
||||||
|
|
||||||
import '../../constant/box_name.dart';
|
import '../../controller/notification/passenger_notification_controller.dart';
|
||||||
import '../../main.dart';
|
import '../widgets/elevated_btn.dart';
|
||||||
import '../widgets/my_scafold.dart';
|
import '../widgets/my_scafold.dart';
|
||||||
|
import '../widgets/mycircular.dart';
|
||||||
|
|
||||||
class NotificationPage extends StatelessWidget {
|
class NotificationPage extends StatelessWidget {
|
||||||
const NotificationPage({super.key});
|
const NotificationPage({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
Get.put(PassengerNotificationController());
|
||||||
return MyScafolld(
|
return MyScafolld(
|
||||||
isleading: true,
|
isleading: true,
|
||||||
title: 'Notifications',
|
title: 'Notifications',
|
||||||
action: IconButton(
|
|
||||||
onPressed: () async {
|
|
||||||
print(box.read(BoxName.tokenFCM).toString());
|
|
||||||
// await CRUD().post(link: AppLink.addTokens, payload: {
|
|
||||||
// 'token': box.read(BoxName.tokenFCM).toString(),
|
|
||||||
// 'passengerID': box.read(BoxName.pasengerID).toString()
|
|
||||||
// }).then((value) => print('cccc'));
|
|
||||||
},
|
|
||||||
icon: const Icon(
|
|
||||||
Icons.add,
|
|
||||||
color: AppColor.primaryColor,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
body: [
|
body: [
|
||||||
Container(
|
GetBuilder<PassengerNotificationController>(
|
||||||
decoration: AppStyle.boxDecoration,
|
builder: (notificationCaptainController) =>
|
||||||
),
|
notificationCaptainController.isloading
|
||||||
|
? const MyCircularProgressIndicator()
|
||||||
|
: SafeArea(
|
||||||
|
child: ListView.builder(
|
||||||
|
itemCount: notificationCaptainController
|
||||||
|
.notificationData['message'].length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
if (notificationCaptainController
|
||||||
|
.notificationData['message'] ==
|
||||||
|
"No notification data found") {
|
||||||
|
Get.defaultDialog();
|
||||||
|
}
|
||||||
|
var res = notificationCaptainController
|
||||||
|
.notificationData['message'][index];
|
||||||
|
return Card(
|
||||||
|
elevation: 4,
|
||||||
|
color: res['isShown'] == 'true'
|
||||||
|
? AppColor.secondaryColor.withOpacity(.5)
|
||||||
|
: AppColor.secondaryColor.withOpacity(.9),
|
||||||
|
child: ListTile(
|
||||||
|
onTap: () {
|
||||||
|
Get.defaultDialog(
|
||||||
|
title: res['title'],
|
||||||
|
titleStyle: AppStyle.title,
|
||||||
|
content: SizedBox(
|
||||||
|
width: Get.width * .8,
|
||||||
|
// height: Get.height * .4,
|
||||||
|
child: Text(
|
||||||
|
res['body'],
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
confirm: MyElevatedButton(
|
||||||
|
title: 'Ok',
|
||||||
|
onPressed: () {
|
||||||
|
notificationCaptainController
|
||||||
|
.updateNotification(
|
||||||
|
res['id'].toString());
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
leading: res['isShown'] == 'true'
|
||||||
|
? const Icon(
|
||||||
|
Icons.notifications_off_outlined)
|
||||||
|
: const Icon(Icons.notifications_active),
|
||||||
|
title: Text(
|
||||||
|
res['title'],
|
||||||
|
style: AppStyle.title,
|
||||||
|
),
|
||||||
|
subtitle: Text(
|
||||||
|
res['body'],
|
||||||
|
style: AppStyle.subtitle,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
))
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ class MyScafolld extends StatelessWidget {
|
|||||||
super.key,
|
super.key,
|
||||||
required this.title,
|
required this.title,
|
||||||
required this.body,
|
required this.body,
|
||||||
this.action = const Icon(Icons.clear),
|
this.action = const Icon(
|
||||||
|
Icons.clear,
|
||||||
|
color: AppColor.secondaryColor,
|
||||||
|
),
|
||||||
required this.isleading,
|
required this.isleading,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ class MyTextForm extends StatelessWidget {
|
|||||||
hintText: hint.tr,
|
hintText: hint.tr,
|
||||||
),
|
),
|
||||||
validator: (value) {
|
validator: (value) {
|
||||||
if (value!.isEmpty || value.length != 10) {
|
if (value!.isEmpty) {
|
||||||
return 'Please enter $label.'.tr;
|
return 'Please enter $label.'.tr;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -161,6 +161,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
|
calendar_builder:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: calendar_builder
|
||||||
|
sha256: "4b94a20d7e8136b84cd62fb7c7752f4a723b67a4b7ed3c3c14c2615e6e6a4653"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.0.6"
|
||||||
camera:
|
camera:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ dependencies:
|
|||||||
image_cropper: ^4.0.1
|
image_cropper: ^4.0.1
|
||||||
envied: ^0.5.2
|
envied: ^0.5.2
|
||||||
cached_network_image: ^3.3.0
|
cached_network_image: ^3.3.0
|
||||||
|
calendar_builder: ^0.0.6
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user