From 9e0479a0b0c7da560f5d5af9ca1552eefd448aa4 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Fri, 3 May 2024 02:14:11 +0300 Subject: [PATCH] 5/3/1 --- android/app/build.gradle | 2 +- lib/constant/box_name.dart | 1 + lib/controller/auth/login_controller.dart | 41 ++++++++++++++++++- .../home/map_passenger_controller.dart | 28 ++++++++++++- lib/controller/payment/paymob.dart | 2 +- lib/views/auth/login_page.dart | 39 ++++++++++++++++++ 6 files changed, 109 insertions(+), 4 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 7235d74..0acbdc8 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -53,7 +53,7 @@ android { applicationId "com.mobileapp.store.ride" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 22 + minSdkVersion 23 targetSdkVersion flutter.targetSdkVersion versionCode 22 versionName '1.4.6' diff --git a/lib/constant/box_name.dart b/lib/constant/box_name.dart index a821afc..07dcf00 100644 --- a/lib/constant/box_name.dart +++ b/lib/constant/box_name.dart @@ -25,6 +25,7 @@ class BoxName { static const String sexDriver = "sexDriver"; static const String lastNameDriver = "lastNameDriver"; static const String name = "name"; + static const String locationPermission = "locationPermission"; static const String nameDriver = "nameDriver"; static const String driverPhotoUrl = "driverPhotoUrl"; static const String email = "email"; diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart index 86627bb..10f64a3 100644 --- a/lib/controller/auth/login_controller.dart +++ b/lib/controller/auth/login_controller.dart @@ -11,6 +11,8 @@ import 'package:SEFER/controller/functions/secure_storage.dart'; import 'package:SEFER/main.dart'; import 'package:SEFER/views/auth/verify_email_page.dart'; import 'package:SEFER/views/home/map_page_passenger.dart'; +import 'package:location/location.dart'; +// import 'package:permission_handler/permission_handler.dart'; class LoginController extends GetxController { final formKey = GlobalKey(); @@ -147,8 +149,45 @@ class LoginController extends GetxController { } } + final location = Location(); + + // late PermissionStatus permissionGranted = PermissionStatus.denied; + Future getLocationPermission() async { + bool serviceEnabled; + PermissionStatus permissionGranted; + + // Check if location services are enabled + serviceEnabled = await location.serviceEnabled(); + if (!serviceEnabled) { + serviceEnabled = await location.requestService(); + if (!serviceEnabled) { + // Location services are still not enabled, handle the error + return; + } + } + + // Check if the app has permission to access location + permissionGranted = await location.hasPermission(); + if (permissionGranted == PermissionStatus.denied) { + permissionGranted = await location.requestPermission(); + if (permissionGranted != PermissionStatus.granted) { + // Location permission is still not granted, handle the error + permissionGranted = await location.requestPermission(); + return; + } + } + print('permisson is ${permissionGranted.toString()}'); + if ('PermissionStatus.granted' == permissionGranted.toString()) { + box.write(BoxName.locationPermission, 'true'); + } + update(); + } + @override - void onInit() { + void onInit() async { + // permissionLocation = await Permission.locationWhenInUse.isGranted; + // print('permisson is ${permissionGranted}'); + super.onInit(); } } diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 290b30e..19a1452 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -1725,13 +1725,39 @@ class MapPassengerController extends GetxController { }); } + dialoge() { + Get.defaultDialog( + title: 'Location '.tr, + content: Container( + child: Column( + children: [ + Text( + 'We use location to get accurate and nearest driver for you'.tr, + style: AppStyle.title, + ), + TextButton( + onPressed: () async { + // await Permission.location.request(); + Get.back(); + }, + child: Text( + 'Grant'.tr, + style: AppStyle.title, + ), + ) + ], + ), + ), + ); + } + double speed = 0; Future getLocation() async { isLoading = true; update(); bool serviceEnabled; PermissionStatus permissionGranted; - + // dialoge(); // Check if location services are enabled serviceEnabled = await location.serviceEnabled(); if (!serviceEnabled) { diff --git a/lib/controller/payment/paymob.dart b/lib/controller/payment/paymob.dart index 4cb86b8..4b45ecf 100644 --- a/lib/controller/payment/paymob.dart +++ b/lib/controller/payment/paymob.dart @@ -53,7 +53,7 @@ class PaymobManager extends GetxController { // 2. Prepare Payment Data Payload final Map data = { "source": { - "identifier": "01010101010", // Replace with actual source identifier + "identifier": box.read(BoxName.phone), //"01010101010" "subtype": "WALLET", }, "payment_token": paymentToken, diff --git a/lib/views/auth/login_page.dart b/lib/views/auth/login_page.dart index 29a0e91..7dce305 100644 --- a/lib/views/auth/login_page.dart +++ b/lib/views/auth/login_page.dart @@ -10,6 +10,9 @@ import 'package:SEFER/main.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; import 'package:SEFER/views/widgets/my_textField.dart'; +import 'package:location/location.dart'; +import 'package:permission_handler/permission_handler.dart'; +// import 'package:permission_handler/permission_handler.dart'; import '../../constant/info.dart'; import '../../controller/auth/login_controller.dart'; @@ -34,6 +37,8 @@ class LoginPage extends StatelessWidget { agreedPage() else if (box.read(BoxName.countryCode) == null) CountryPicker() + else if (box.read(BoxName.locationPermission) != 'true') + locationPermissionDialog() else SingleChildScrollView( child: Column( @@ -320,4 +325,38 @@ class LoginPage extends StatelessWidget { ), ); } + + locationPermissionDialog() { + return Padding( + padding: const EdgeInsets.all(16), + child: Container( + height: Get.height * .4, + decoration: AppStyle.boxDecoration1, + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Center( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text( + 'We use location to get accurate and nearest driver for you' + .tr, + textAlign: TextAlign.center, + style: AppStyle.title, + ), + MyElevatedButton( + title: 'Grant Location'.tr, + onPressed: () async { + await controller.getLocationPermission(); + }, + kolor: AppColor.greenColor, + ) + ], + ), + ), + ), + ), + ); + } }