25-3/18/1

This commit is contained in:
Hamza-Ayed
2025-03-18 13:54:27 +03:00
parent 6e77dec65f
commit 153d2f64c0
1307 changed files with 9505 additions and 528 deletions
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
+41 -36
View File
@@ -1,12 +1,7 @@
import 'dart:convert';
import 'dart:math';
import 'package:crypto/crypto.dart';
import 'dart:io';
import 'package:location/location.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:sefer_driver/constant/box_name.dart';
import 'package:sefer_driver/controller/firebase/local_notification.dart';
import 'package:sefer_driver/controller/functions/encrypt_decrypt.dart';
import 'package:sefer_driver/main.dart';
import 'package:sefer_driver/views/home/Captin/orderCaptin/vip_order_page.dart';
import 'package:flutter/material.dart';
@@ -15,11 +10,7 @@ import 'package:get/get.dart';
import 'package:sefer_driver/controller/home/captin/home_captain_controller.dart';
import '../../../../../constant/colors.dart';
import '../../../../../controller/functions/face_detect.dart';
import '../../../../../controller/functions/location_controller.dart';
import '../../../../../controller/functions/package_info.dart';
import '../../../../../controller/functions/security_checks.dart';
import '../../../../../print.dart';
import '../../../../../controller/packages/lingo/lingo_hunter.dart';
import '../../../../Rate/ride_calculate_driver.dart';
GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
@@ -102,32 +93,46 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
)
: const SizedBox(),
// : const SizedBox(),
AnimatedContainer(
duration: const Duration(microseconds: 200),
width: controller.widthMapTypeAndTraffic,
decoration: BoxDecoration(
color: AppColor.secondaryColor,
border: Border.all(color: AppColor.blueColor),
borderRadius: BorderRadius.circular(15)),
child: Builder(builder: (context) {
return IconButton(
onPressed: () async {
final random = Random();
// AnimatedContainer(
// duration: const Duration(microseconds: 200),
// width: controller.widthMapTypeAndTraffic,
// decoration: BoxDecoration(
// color: AppColor.secondaryColor,
// border: Border.all(color: AppColor.blueColor),
// borderRadius: BorderRadius.circular(15)),
// child: Builder(builder: (context) {
// return IconButton(
// onPressed: () async {
// print("Current working directory: ${Directory.current.path}");
// print(
// "pubspec.yaml exists here?: ${await File('${Directory.current.path}/pubspec.yaml').exists()}");
if (random.nextBool()) {
await SecurityHelper.performSecurityChecks();
} else {
await SecurityChecks.isDeviceRootedFromNative(Get.context!);
}
},
icon: const Icon(
FontAwesome5.grin_tears,
size: 29,
color: AppColor.blueColor,
),
);
}),
),
// try {
// await LingoHunter.extractAndCreateTranslationFiles(
// baseLang: 'en',
// langs: ['ar', 'fr', 'es'],
// // Remove projectDirectory: Let it auto-detect.
// // projectDirectory: '/Users/hamzaaleghwairyeen/development/App/driver_sefer',
// outputDirectory:
// '/Users/hamzaaleghwairyeen/development/App/driver_sefer/assets/lang',
// additionalRegExps: [
// RegExp(r'translate\("([^\"]+)"\)'),
// ],
// );
// print(
// "✅ Translation files generated successfully (auto-detected).");
// } catch (e) {
// print("Error: $e");
// }
// },
// icon: const Icon(
// FontAwesome5.grin_tears,
// size: 29,
// color: AppColor.blueColor,
// ),
// );
// }),
// ),
const SizedBox(
height: 5,
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
+1 -2
View File
@@ -183,8 +183,7 @@ class CardSeferWalletDriver extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'${Get.find<CaptainWalletController>().totalAmountVisa} ${'L.E'.tr}' ??
'0.0 ${'L.E'.tr}',
'${Get.find<CaptainWalletController>().totalAmountVisa} ${'L.E'.tr}',
style: AppStyle.headTitle2.copyWith(
color: AppColor.writeColor, fontSize: 28),
),
View File
View File
View File
+59 -11
View File
@@ -1,3 +1,4 @@
import 'package:local_auth/local_auth.dart';
import 'package:sefer_driver/constant/links.dart';
import 'package:sefer_driver/controller/functions/crud.dart';
import 'package:sefer_driver/controller/functions/tts.dart';
@@ -382,13 +383,38 @@ class WalletCaptain extends StatelessWidget {
confirm: MyElevatedButton(
title: 'Pay'.tr,
onPressed: () async {
if (double.parse(controller.amountFromBudgetController.text) <
double.parse(controller.totalAmountVisa)) {
await controller.payFromBudget();
} else {
Get.back();
bool isAvailable =
await LocalAuthentication().isDeviceSupported();
if (isAvailable) {
// Authenticate the user
bool didAuthenticate = await LocalAuthentication().authenticate(
localizedReason:
'Use Touch ID or Face ID to confirm payment',
options: AuthenticationOptions(
biometricOnly: true,
sensitiveTransaction: true,
));
if (didAuthenticate) {
if (double.parse(controller.amountFromBudgetController.text) <
double.parse(controller.totalAmountVisa)) {
await controller.payFromBudget();
} else {
Get.back();
mySnackeBarError('Your Budget less than needed'.tr);
mySnackeBarError('Your Budget less than needed'.tr);
}
} else {
// Authentication failed, handle accordingly
MyDialog().getDialog('Authentication failed'.tr, ''.tr, () {
Get.back();
});
}
} else {
MyDialog().getDialog('Biometric Authentication'.tr,
'You should use Touch ID or Face ID to confirm payment'.tr,
() {
Get.back();
});
}
},
),
@@ -406,12 +432,34 @@ class WalletCaptain extends StatelessWidget {
Widget _buildTransferBudgetButton(CaptainWalletController controller) {
return MyElevatedButton(
title: 'Transfer budget'.tr,
onPressed: () {
if (double.parse(controller.totalAmountVisa) > 15) {
Get.to(() => const TransferBudgetPage());
onPressed: () async {
bool isAvailable = await LocalAuthentication().isDeviceSupported();
if (isAvailable) {
// Authenticate the user
bool didAuthenticate = await LocalAuthentication().authenticate(
localizedReason: 'Use Touch ID or Face ID to confirm payment',
options: AuthenticationOptions(
biometricOnly: true,
sensitiveTransaction: true,
));
if (didAuthenticate) {
if (double.parse(controller.totalAmountVisa) > 15) {
Get.to(() => const TransferBudgetPage());
} else {
mySnackeBarError(
"You don't have enough money in your SEFER wallet".tr);
}
} else {
// Authentication failed, handle accordingly
MyDialog().getDialog('Authentication failed'.tr, ''.tr, () {
Get.back();
});
}
} else {
mySnackeBarError(
"You don't have enough money in your SEFER wallet".tr);
MyDialog().getDialog('Biometric Authentication'.tr,
'You should use Touch ID or Face ID to confirm payment'.tr, () {
Get.back();
});
}
},
);
View File
View File
View File
View File
View File
View File
View File
View File
View File