diff --git a/android/app/build.gradle b/android/app/build.gradle index 7ee31d7..b9e7a6c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -55,8 +55,8 @@ android { // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. minSdkVersion 22 targetSdkVersion flutter.targetSdkVersion - versionCode 25 - versionName '1.4.8' + versionCode 27 + versionName '1.4.91' // manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml'] } diff --git a/assets/fonts/digit.ttf b/assets/fonts/digit.ttf new file mode 100644 index 0000000..5dbe6f9 Binary files /dev/null and b/assets/fonts/digit.ttf differ diff --git a/assets/fonts/digital-counter-7.regular.ttf b/assets/fonts/digital-counter-7.regular.ttf deleted file mode 100644 index 81775ee..0000000 Binary files a/assets/fonts/digital-counter-7.regular.ttf and /dev/null differ diff --git a/assets/fonts/josefin.ttf b/assets/fonts/josefin.ttf new file mode 100644 index 0000000..98deb67 Binary files /dev/null and b/assets/fonts/josefin.ttf differ diff --git a/assets/fonts/mohanad.ttf b/assets/fonts/mohanad.ttf new file mode 100644 index 0000000..854341c Binary files /dev/null and b/assets/fonts/mohanad.ttf differ diff --git a/lib/constant/box_name.dart b/lib/constant/box_name.dart index 1876e1c..b0aed6e 100644 --- a/lib/constant/box_name.dart +++ b/lib/constant/box_name.dart @@ -6,7 +6,7 @@ class BoxName { static const String lang = "lang"; static const String carType = "carType"; static const String carPlate = "carPlate"; - static const String isVerified = 'false'; + static const String isVerified = '0'; static const String statusDriverLocation = "statusDriverLocation"; static const String password = "password"; static const String arrivalTime = "arrivalTime"; diff --git a/lib/constant/style.dart b/lib/constant/style.dart index 7bf577d..b76c671 100644 --- a/lib/constant/style.dart +++ b/lib/constant/style.dart @@ -1,7 +1,6 @@ import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/main.dart'; import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; import 'colors.dart'; class AppStyle { @@ -10,42 +9,42 @@ class AppStyle { fontSize: 40, color: AppColor.accentColor, fontFamily: box.read(BoxName.lang) == 'en' - ? GoogleFonts.josefinSans().fontFamily + ? 'josefin' : box.read(BoxName.lang) == 'ar' - ? GoogleFonts.amiri().fontFamily - : GoogleFonts.josefinSans().fontFamily); + ? 'mohanad' + : 'josefin'); static TextStyle headTitle2 = TextStyle( fontWeight: FontWeight.bold, fontSize: 26, color: AppColor.primaryColor, fontFamily: box.read(BoxName.lang) == 'en' - ? GoogleFonts.josefinSans().fontFamily + ? 'josefin' : box.read(BoxName.lang) == 'ar' - ? GoogleFonts.amiri().fontFamily - : GoogleFonts.josefinSans().fontFamily); + ? 'mohanad' + : 'josefin'); static TextStyle title = TextStyle( fontWeight: FontWeight.bold, - fontSize: 16, + fontSize: 14, color: AppColor.primaryColor, fontFamily: box.read(BoxName.lang) == 'en' - ? GoogleFonts.josefinSans().fontFamily + ? 'josefin' : box.read(BoxName.lang) == 'ar' - ? GoogleFonts.amiri().fontFamily - : GoogleFonts.josefinSans().fontFamily); + ? 'mohanad' + : 'josefin'); static TextStyle subtitle = TextStyle( fontWeight: FontWeight.bold, fontSize: 13, color: AppColor.primaryColor, fontFamily: box.read(BoxName.lang) == 'en' - ? GoogleFonts.josefinSans().fontFamily + ? 'josefin' : box.read(BoxName.lang) == 'ar' - ? GoogleFonts.amiri().fontFamily - : GoogleFonts.josefinSans().fontFamily); - static TextStyle number = TextStyle( + ? 'mohanad' + : 'josefin'); + static TextStyle number = const TextStyle( fontWeight: FontWeight.bold, fontSize: 14, color: AppColor.primaryColor, - fontFamily: GoogleFonts.averiaSansLibre().fontFamily); + fontFamily: 'digit'); static BoxDecoration boxDecoration = const BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(12)), diff --git a/lib/controller/auth/apple_signin_controller.dart b/lib/controller/auth/apple_signin_controller.dart new file mode 100644 index 0000000..af64880 --- /dev/null +++ b/lib/controller/auth/apple_signin_controller.dart @@ -0,0 +1,35 @@ +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:get/get.dart'; +import 'package:sign_in_with_apple/sign_in_with_apple.dart'; + +class AuthController extends GetxController { + final FirebaseAuth _auth = FirebaseAuth.instance; + + Future signInWithApple() async { + try { + final appleCredential = await SignInWithApple.getAppleIDCredential( + scopes: [ + AppleIDAuthorizationScopes.email, + AppleIDAuthorizationScopes.fullName, + ], + ); + + final oAuthProvider = OAuthProvider('apple.com'); + final credential = oAuthProvider.credential( + idToken: appleCredential.identityToken, + accessToken: appleCredential.authorizationCode, + ); + + UserCredential userCredential = + await _auth.signInWithCredential(credential); + return userCredential.user; + } catch (error) { + print("Error during Apple sign-in: $error"); + return null; + } + } + + void signOut() async { + await _auth.signOut(); + } +} diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart index fa9a5c8..5937e42 100644 --- a/lib/controller/auth/login_controller.dart +++ b/lib/controller/auth/login_controller.dart @@ -66,8 +66,9 @@ class LoginController extends GetxController { if (jsonDecoeded['status'] == 'success' && jsonDecoeded['data'][0]['verified'] == 1) { // - box.write(BoxName.isVerified, 'true'); + box.write(BoxName.isVerified, '1'); box.write(BoxName.email, jsonDecoeded['data'][0]['email']); + box.write(BoxName.phone, jsonDecoeded['data'][0]['phone']); print(box.read(BoxName.tokenFCM)); var token = await CRUD().get(link: AppLink.getTokens, payload: { @@ -78,12 +79,14 @@ class LoginController extends GetxController { if (token != 'failure') { if (jsonDecode(token)['data'][0]['token'] != box.read(BoxName.tokenFCM)) { + print('token changed'); Get.put(FirebaseMessagesController()) .sendNotificationToAnyWithoutData( 'token change', 'change device', jsonDecode(token)['data'][0]['token'].toString(), ); + Future.delayed(const Duration(seconds: 1)); await CRUD().post(link: AppLink.addTokens, payload: { 'token': box.read(BoxName.tokenFCM), 'passengerID': box.read(BoxName.passengerID).toString() diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart index a57771a..2f1b26c 100644 --- a/lib/controller/auth/register_controller.dart +++ b/lib/controller/auth/register_controller.dart @@ -116,7 +116,7 @@ class RegisterController extends GetxController { payload: payload, ); if (jsonDecode(res1)['status'] == 'success') { - box.write(BoxName.isVerified, 'true'); + box.write(BoxName.isVerified, '1'); box.write(BoxName.phone, '+2${phoneController.text}'); Get.offAll(const MapPagePassenger()); } diff --git a/lib/controller/firebase/firbase_messge.dart b/lib/controller/firebase/firbase_messge.dart index ca5ec03..3876172 100644 --- a/lib/controller/firebase/firbase_messge.dart +++ b/lib/controller/firebase/firbase_messge.dart @@ -94,12 +94,7 @@ class FirebaseMessagesController extends GetxController { Future getToken() async { fcmToken.getToken().then((token) { - if (box.read(BoxName.email) == null) { - box.write(BoxName.tokenDriver, token); - } else { - box.write(BoxName.tokenFCM, token); - } - print(token); + box.write(BoxName.tokenFCM, token); }); FirebaseMessaging.onMessage.listen((RemoteMessage message) { diff --git a/lib/controller/functions/launch.dart b/lib/controller/functions/launch.dart index c4a5668..3c170f3 100644 --- a/lib/controller/functions/launch.dart +++ b/lib/controller/functions/launch.dart @@ -13,24 +13,24 @@ void launchCommunication( String method, String contactInfo, String message) async { String url; + // Encode the message + String encodedMessage = Uri.encodeComponent(message); + if (Platform.isIOS) { switch (method) { case 'phone': url = 'tel:$contactInfo'; break; - case 'sms': - url = 'sms:$contactInfo?body=$message'; + url = 'sms:$contactInfo?body=$encodedMessage'; break; - case 'whatsapp': - url = 'https://api.whatsapp.com/send?phone=$contactInfo&text=$message'; + url = + 'https://api.whatsapp.com/send?phone=$contactInfo&text=$encodedMessage'; break; - case 'email': - url = 'mailto:$contactInfo?subject=Subject&body=$message'; + url = 'mailto:$contactInfo?subject=Subject&body=$encodedMessage'; break; - default: print('Method not supported on iOS'); return; @@ -40,19 +40,15 @@ void launchCommunication( case 'phone': url = 'tel:$contactInfo'; break; - case 'sms': - url = 'sms:$contactInfo?body=$message'; + url = 'sms:$contactInfo?body=$encodedMessage'; break; - case 'whatsapp': - url = 'whatsapp://send?phone=$contactInfo&text=$message'; + url = 'whatsapp://send?phone=$contactInfo&text=$encodedMessage'; break; - case 'email': - url = 'mailto:$contactInfo?subject=Subject&body=$message'; + url = 'mailto:$contactInfo?subject=Subject&body=$encodedMessage'; break; - default: print('Method not supported on Android'); return; @@ -62,8 +58,8 @@ void launchCommunication( return; } - if (await canLaunchUrl(Uri.parse(url))) { - launchUrl(Uri.parse(url)); + if (await canLaunch(url)) { + await launch(url); } else { print('Could not launch $url'); } diff --git a/lib/controller/home/map_passenger_controller.dart b/lib/controller/home/map_passenger_controller.dart index 2853a78..47fa470 100644 --- a/lib/controller/home/map_passenger_controller.dart +++ b/lib/controller/home/map_passenger_controller.dart @@ -479,14 +479,13 @@ class MapPassengerController extends GetxController { void sendWhatsapp(String to) async { // Get the driver's phone number. - // String driverPhone = - // dataCarsLocationByPassenger['message'][carsOrder]['phone'].toString(); + // String driverPhone = dataCarsLocationByPassenger['message'][carsOrder]['phone'].toString(); // Format the message. String message = '${'${'Hi! This is'.tr} ${box.read(BoxName.name)}.\n${' I am using'.tr}'} ${AppInformation.appName}${' to ride with'.tr} $firstName${' as the driver.'.tr} $firstName \n${'is driving a '.tr}$model\n${' with license plate '.tr}$licensePlate.\n${' I am currently located at '.tr} https://www.google.com/maps/place/${passengerLocation.latitude},${passengerLocation.longitude}.\n${' If you need to reach me, please contact the driver directly at'.tr}\n\n $driverPhone.'; - // Launch the URL to send the SMS. + // Launch the URL to send the WhatsApp message. launchCommunication('whatsapp', to, message); } @@ -889,7 +888,7 @@ class MapPassengerController extends GetxController { driverPhone = dataCarsLocationByPassenger['message'][carsOrder]['phone'].toString(); firstName = dataCarsLocationByPassenger['message'][carsOrder] - ['driverName'] + ['first_name'] // driverName .toString(); carColor = dataCarsLocationByPassenger['message'][carsOrder]['color'].toString(); @@ -1338,7 +1337,9 @@ class MapPassengerController extends GetxController { for (var i = 0; i < loopCount; i++) { // Wait for 50 seconds. await Future.delayed(const Duration(seconds: 4)); - await getDriverCarsLocationToPassengerAfterApplied(); + if (isRideFinished == true) { + await getDriverCarsLocationToPassengerAfterApplied(); + } reloadMarkerDriverCarsLocationToPassengerAfterApplied(); } } @@ -1352,7 +1353,9 @@ class MapPassengerController extends GetxController { // Wait for 50 seconds. print('loop is $i from $loopCount'); await Future.delayed(const Duration(seconds: 4)); - await getDriverCarsLocationToPassengerAfterApplied(); + if (isRideFinished == true) { + await getDriverCarsLocationToPassengerAfterApplied(); + } reloadMarkerDriverCarsLocationToPassengerAfterApplied(); } } @@ -1642,7 +1645,7 @@ class MapPassengerController extends GetxController { Future getPlaces() async { var url = // '${AppLink.googleMapsLink}place/nearbysearch/json?location=${mylocation.longitude}&radius=25000&language=ar&keyword=&key=${placeController.text}${AK.mapAPIKEY}'; - '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${placeDestinationController.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=50000&language=${box.read(BoxName.lang)}&key=${AK.mapAPIKEY.toString()}'; + '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${placeDestinationController.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=50000&language=ar&key=${AK.mapAPIKEY.toString()}'; var response = await CRUD().getGoogleApi(link: url, payload: {}); @@ -1654,7 +1657,7 @@ class MapPassengerController extends GetxController { Future getPlacesStart() async { var url = // '${AppLink.googleMapsLink}place/nearbysearch/json?location=${mylocation.longitude}&radius=25000&language=ar&keyword=&key=${placeController.text}${AK.mapAPIKEY}'; - '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${placeStartController.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=50000&language=${box.read(BoxName.lang)}&key=${AK.mapAPIKEY.toString()}'; + '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${placeStartController.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=50000&language=ar&key=${AK.mapAPIKEY.toString()}'; var response = await CRUD().getGoogleApi(link: url, payload: {}); @@ -1665,7 +1668,7 @@ class MapPassengerController extends GetxController { Future getPlacesListsWayPoint(int index) async { var url = - '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${wayPoint0Controller.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=50000&language=${box.read(BoxName.lang)}&key=${AK.mapAPIKEY.toString()}'; + '${AppLink.googleMapsLink}place/nearbysearch/json?keyword=${wayPoint0Controller.text}&location=${passengerLocation.latitude},${passengerLocation.longitude}&radius=50000&language=ar&key=${AK.mapAPIKEY.toString()}'; var response = await CRUD().getGoogleApi(link: url, payload: {}); @@ -2619,6 +2622,7 @@ class MapPassengerController extends GetxController { startMarkerReloading(); Get.put(TextToSpeechController()); box.write(BoxName.carType, 'yet'); + box.write(BoxName.tipPercentage, '0'); // await getNearestDriverByPassengerLocation(); initilizeGetStorage(); diff --git a/lib/controller/home/splash_screen_controlle.dart b/lib/controller/home/splash_screen_controlle.dart index 5475688..4ea2eb9 100644 --- a/lib/controller/home/splash_screen_controlle.dart +++ b/lib/controller/home/splash_screen_controlle.dart @@ -45,12 +45,16 @@ class SplashScreenController extends GetxController } void startTimer() async { + print(box.read(BoxName.email)); + print(box.read(BoxName.phone)); + print(box.read(BoxName.isVerified)); + print('---------'); Timer(const Duration(seconds: 5), () async { box.read(BoxName.onBoarding) == null ? Get.off(() => OnBoardingPage()) : box.read(BoxName.email) != null && box.read(BoxName.phone) != null && - box.read(BoxName.isVerified) == 'true' + box.read(BoxName.isVerified) == '1' // ? Get.off(() => const MapPagePassenger()) ? await Get.put(LoginController()).loginFromSignInGoogle( box.read(BoxName.passengerID).toString(), diff --git a/lib/controller/rate/rate_conroller.dart b/lib/controller/rate/rate_conroller.dart index 69db08e..889156e 100644 --- a/lib/controller/rate/rate_conroller.dart +++ b/lib/controller/rate/rate_conroller.dart @@ -10,6 +10,7 @@ import 'package:SEFER/views/home/map_page_passenger.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import '../firebase/firbase_messge.dart'; +import '../payment/payment_controller.dart'; // import '../home/captin/home_captain_controller.dart'; @@ -78,7 +79,7 @@ class RateController extends GetxController { titleStyle: AppStyle.title, middleText: '', confirm: MyElevatedButton(title: 'Ok', onPressed: () => Get.back())); - } else { + } else if (Get.find().isWalletChecked == true) { var tip = (Get.find().totalPassenger) * (double.parse(box.read(BoxName.tipPercentage.toString()))); var res = await CRUD().post(link: AppLink.addTips, payload: { @@ -108,17 +109,16 @@ class RateController extends GetxController { Get.find().driverToken.toString(), ); } - - await CRUD().post(link: AppLink.addRateToDriver, payload: { - 'passenger_id': box.read(BoxName.passengerID).toString(), - 'driver_id': driverId, - 'ride_id': rideId, - 'rating': selectedRateItemId.toString(), - 'comment': comment.text, - }).then((value) { - Get.find().restCounter(); - Get.offAll(const MapPagePassenger()); - }); } + await CRUD().post(link: AppLink.addRateToDriver, payload: { + 'passenger_id': box.read(BoxName.passengerID).toString(), + 'driver_id': driverId, + 'ride_id': rideId, + 'rating': selectedRateItemId.toString(), + 'comment': comment.text, + }).then((value) { + Get.find().restCounter(); + Get.offAll(const MapPagePassenger()); + }); } } diff --git a/lib/views/Rate/rate_captain.dart b/lib/views/Rate/rate_captain.dart index aae1db2..0312af1 100644 --- a/lib/views/Rate/rate_captain.dart +++ b/lib/views/Rate/rate_captain.dart @@ -108,11 +108,9 @@ class RateDriverFromPassenger extends StatelessWidget { textAlign: TextAlign.center, ), ), - (Get.find().isCashChecked == - false && - Get.find() - .isWalletChecked == - true) + (Get.find() + .isWalletChecked == + true) ? const DriverTipWidget() : const SizedBox(), ], diff --git a/lib/views/auth/login_page.dart b/lib/views/auth/login_page.dart index 0dee108..7d5fd77 100644 --- a/lib/views/auth/login_page.dart +++ b/lib/views/auth/login_page.dart @@ -1,7 +1,9 @@ import 'dart:convert'; +import 'dart:io'; import 'package:SEFER/views/auth/sms_verfy_page.dart'; import 'package:animated_text_kit/animated_text_kit.dart'; +import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; @@ -15,6 +17,7 @@ import 'package:SEFER/views/widgets/my_scafold.dart'; import '../../constant/info.dart'; import '../../constant/links.dart'; +import '../../controller/auth/apple_signin_controller.dart'; import '../../controller/auth/google_sign.dart'; import '../../controller/auth/login_controller.dart'; import '../../controller/firebase/firbase_messge.dart'; @@ -25,6 +28,7 @@ import 'register_page.dart'; class LoginPage extends StatelessWidget { final controller = Get.put(LoginController()); + final AuthController authController = Get.put(AuthController()); LoginPage({super.key}); @@ -219,15 +223,30 @@ class LoginPage extends StatelessWidget { }, kolor: AppColor.blueColor, ), - // MyElevatedButton( - // title: 'Sign In by Google'.tr, - // onPressed: () async { - // print(box.read(BoxName.email)); - // print(box.read(BoxName.phone)); - // print(box.read(BoxName.isVerified)); - // }, - // kolor: AppColor.blueColor, - // ), + !Platform.isAndroid + ? MyElevatedButton( + title: 'Sign In by Apple'.tr, + onPressed: () async { + User? user = + await authController.signInWithApple(); + if (user != null) { + print( + "Successfully signed in: ${user.email}"); + print( + "Successfully signed in: ${user.uid}"); + box.write(BoxName.driverID, user.uid); + box.write( + BoxName.emailDriver, user.email); + await GoogleSignInHelper + .signInFromLogin(); + // Navigate to another screen or perform other actions + } else { + print("Sign-in failed"); + } + }, + kolor: AppColor.primaryColor, + ) + : const SizedBox(), ], ), )), diff --git a/lib/views/home/map_widget.dart/ride_begin_passenger.dart b/lib/views/home/map_widget.dart/ride_begin_passenger.dart index 82260ef..9e09228 100644 --- a/lib/views/home/map_widget.dart/ride_begin_passenger.dart +++ b/lib/views/home/map_widget.dart/ride_begin_passenger.dart @@ -1,3 +1,4 @@ +import 'package:SEFER/constant/links.dart'; import 'package:SEFER/views/home/profile/feed_back_page.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:flutter/material.dart'; @@ -45,7 +46,7 @@ class RideBeginPassenger extends StatelessWidget { CircleAvatar( radius: 30, backgroundImage: NetworkImage( - 'https://ride.mobile-app.store/portrate_captain_image/${controller.driverId}.jpg'), + '${AppLink.server}/portrate_captain_image/${controller.driverId}.jpg'), ), Column( children: [ diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 0806438..ad6a21e 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -9,6 +9,7 @@ import agora_rtc_engine import audio_session import device_info_plus import file_selector_macos +import firebase_auth import firebase_core import firebase_messaging import flutter_local_notifications @@ -22,6 +23,7 @@ import location import package_info_plus import path_provider_foundation import record_darwin +import sign_in_with_apple import sqflite import url_launcher_macos import video_player_avfoundation @@ -32,6 +34,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) @@ -45,6 +48,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) RecordPlugin.register(with: registry.registrar(forPlugin: "RecordPlugin")) + SignInWithApplePlugin.register(with: registry.registrar(forPlugin: "SignInWithApplePlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 27feefc..58012b9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: f5628cd9c92ed11083f425fd1f8f1bc60ecdda458c81d73b143aeda036c35fe7 + sha256: e4be6711f96d3d4eebe79728897d645b7a5585bbfdd6d534878d202c171266d7 url: "https://pub.dev" source: hosted - version: "1.3.16" + version: "1.3.34" agora_rtc_engine: dependency: "direct main" description: @@ -146,7 +146,7 @@ packages: source: hosted version: "8.8.1" cached_network_image: - dependency: "direct main" + dependency: transitive description: name: cached_network_image sha256: f98972704692ba679db144261172a8e20feb145636c617af0eb4022132a6797f @@ -177,46 +177,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.6" - camera: - dependency: "direct main" - description: - name: camera - sha256: "7fa53bb1c2059e58bf86b7ab506e3b2a78e42f82d365b44b013239b975a166ef" - url: "https://pub.dev" - source: hosted - version: "0.10.5+7" - camera_android: - dependency: transitive - description: - name: camera_android - sha256: "7215e38fa0be58cc3203a6e48de3636fb9b1bf93d6eeedf667f882d51b3a4bf3" - url: "https://pub.dev" - source: hosted - version: "0.10.8+15" - camera_avfoundation: - dependency: transitive - description: - name: camera_avfoundation - sha256: "3c8dd395f18722f01b5f325ddd7f5256e9bcdce538fb9243b378ba759df3283c" - url: "https://pub.dev" - source: hosted - version: "0.9.13+8" - camera_platform_interface: - dependency: transitive - description: - name: camera_platform_interface - sha256: b6a568984254cadaca41a6b896d87d3b2e79a2e5791afa036f8d524c6783b93a - url: "https://pub.dev" - source: hosted - version: "2.7.0" - camera_web: - dependency: transitive - description: - name: camera_web - sha256: d4c2c571c7af04f8b10702ca16bb9ed2a26e64534171e8f75c9349b2c004d8f1 - url: "https://pub.dev" - source: hosted - version: "0.3.2+3" characters: dependency: transitive description: @@ -313,14 +273,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.6" - custom_searchable_dropdown: - dependency: "direct main" - description: - name: custom_searchable_dropdown - sha256: c2676b1ee55f0b71a7cd890ae473cf97651f018b2695b3bf57c8c28a14e2fa95 - url: "https://pub.dev" - source: hosted - version: "2.1.1" dart_style: dependency: transitive description: @@ -338,7 +290,7 @@ packages: source: hosted version: "0.7.10" device_info_plus: - dependency: "direct main" + dependency: transitive description: name: device_info_plus sha256: "0042cb3b2a76413ea5f8a2b40cec2a33e01d0c937e91f0f7c211fde4f7739ba6" @@ -433,14 +385,38 @@ packages: url: "https://pub.dev" source: hosted version: "0.9.3+1" + firebase_auth: + dependency: "direct main" + description: + name: firebase_auth + sha256: ea95cd29e27e8ec1971af263d74b208ce85dbc7df9197d8b5eab2aa7de7cfea8 + url: "https://pub.dev" + source: hosted + version: "4.19.6" + firebase_auth_platform_interface: + dependency: transitive + description: + name: firebase_auth_platform_interface + sha256: c252d2c97a02cf03fbf3595c5f7edf2a731062356b09d2c338f0b3d63567239f + url: "https://pub.dev" + source: hosted + version: "7.2.7" + firebase_auth_web: + dependency: transitive + description: + name: firebase_auth_web + sha256: "5db2319d59b4bb08cf0cc26e0f110f9ae1cf9cf775ce516e5cc38cd6704253de" + url: "https://pub.dev" + source: hosted + version: "5.11.6" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "96607c0e829a581c2a483c658f04e8b159964c3bae2730f73297070bc85d40bb" + sha256: "4b5100e2dbc3fe72c2d4241a046d3f01457fe11293283a324f5c52575e3406f8" url: "https://pub.dev" source: hosted - version: "2.24.2" + version: "2.31.1" firebase_core_platform_interface: dependency: transitive description: @@ -453,10 +429,10 @@ packages: dependency: transitive description: name: firebase_core_web - sha256: d585bdf3c656c3f7821ba1bd44da5f13365d22fcecaf5eb75c4295246aaa83c0 + sha256: "43d9e951ac52b87ae9cc38ecdcca1e8fa7b52a1dd26a96085ba41ce5108db8e9" url: "https://pub.dev" source: hosted - version: "2.10.0" + version: "2.17.0" firebase_messaging: dependency: "direct main" description: @@ -816,22 +792,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" - google_fonts: - dependency: "direct main" - description: - name: google_fonts - sha256: "6b6f10f0ce3c42f6552d1c70d2c28d764cf22bb487f50f66cca31dcd5194f4d6" - url: "https://pub.dev" - source: hosted - version: "4.0.4" - google_generative_ai: - dependency: "direct main" - description: - name: google_generative_ai - sha256: "946f37c947bbc3591ed1c2878f8a41a0f75e74468dae791f84f14db3df3f3551" - url: "https://pub.dev" - source: hosted - version: "0.0.1-dev" google_identity_services_web: dependency: transitive description: @@ -985,7 +945,7 @@ packages: source: hosted version: "4.0.2" image: - dependency: "direct main" + dependency: transitive description: name: image sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" @@ -1256,14 +1216,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" - lottie: - dependency: "direct main" - description: - name: lottie - sha256: a93542cc2d60a7057255405f62252533f8e8956e7e06754955669fd32fb4b216 - url: "https://pub.dev" - source: hosted - version: "2.7.0" matcher: dependency: transitive description: @@ -1616,6 +1568,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.4" + sign_in_with_apple: + dependency: "direct main" + description: + name: sign_in_with_apple + sha256: b0abd9c0d0407140829b12cd99a250f10b20352573ff08c7e0c5174c64b4973e + url: "https://pub.dev" + source: hosted + version: "6.1.0" + sign_in_with_apple_platform_interface: + dependency: transitive + description: + name: sign_in_with_apple_platform_interface + sha256: c2ef2ce6273fce0c61acd7e9ff5be7181e33d7aa2b66508b39418b786cca2119 + url: "https://pub.dev" + source: hosted + version: "1.1.0" + sign_in_with_apple_web: + dependency: transitive + description: + name: sign_in_with_apple_web + sha256: c009e9beeb6c376e86aaa154fcc8b4e075d4bad90c56286b9668a51cdb6129ea + url: "https://pub.dev" + source: hosted + version: "2.1.0" sky_engine: dependency: transitive description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index a63026f..b3b998c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,16 +18,13 @@ dependencies: google_maps_flutter: ^2.5.0 sqflite: ^2.3.0 path: ^1.8.3 - lottie: ^2.5.0 intl: ^0.18.1 - google_fonts: ^ 4.0.4 http: ^0.13.6 get: ^4.6.5 get_storage: ^2.1.1 url_launcher: ^6.1.12 location: ^5.0.2+1 google_polyline_algorithm: ^3.1.0 - custom_searchable_dropdown: ^2.1.1 animated_text_kit: ^4.2.2 flutter_secure_storage: ^9.0.0 geolocator: ^10.0.0 @@ -35,21 +32,20 @@ dependencies: flutter_launcher_icons: ^0.13.1 flutter_rating_bar: ^4.0.1 flutter_font_icons: ^2.2.5 - device_info_plus: ^9.1.0 image_picker: ^1.0.4 flutter_stripe: ^9.5.0+1 - camera: ^0.10.5+5 +# camera: ^0.10.5+5 #to be remove flutter_widget_from_html: ^0.14.6 local_auth: ^2.1.7 - image: ^4.1.3 +# image: ^4.1.3 #to be remove image_cropper: ^4.0.1 envied: ^0.5.2 - cached_network_image: ^3.3.0 +# cached_network_image: ^3.3.0 calendar_builder: ^0.0.6 agora_rtc_engine: ^6.2.6 flutter_tts: ^3.8.5 permission_handler: ^11.3.0 - google_generative_ai: ^0.0.1-dev +# google_generative_ai: ^0.0.1-dev vibration: ^1.8.4 wakelock_plus: record: ^5.0.5 @@ -58,6 +54,8 @@ dependencies: just_audio: ^0.9.37 share: ^2.0.4 google_sign_in: ^6.2.1 + sign_in_with_apple: ^6.1.0 + firebase_auth: ^4.19.6 @@ -96,6 +94,12 @@ flutter: - shorebird.yaml fonts: - - family: digital-counter-7 + - family: mohanad fonts: - - asset: assets/fonts/digital-counter-7.regular.ttf \ No newline at end of file + - asset: assets/fonts/mohanad.ttf + - family: josefin + fonts: + - asset: assets/fonts/josefin.ttf + - family: digit + fonts: + - asset: assets/fonts/digit.ttf \ No newline at end of file diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8e8d77f..77a5f42 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -23,6 +24,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("AgoraRtcEnginePlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); + FirebaseAuthPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi")); FirebaseCorePluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); FlutterSecureStorageWindowsPluginRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 4a63bae..71a0a7a 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,6 +5,7 @@ list(APPEND FLUTTER_PLUGIN_LIST agora_rtc_engine file_selector_windows + firebase_auth firebase_core flutter_secure_storage_windows flutter_tts