import 'dart:io'; import 'package:SEFER/controller/home/map_passenger_controller.dart'; import 'package:SEFER/views/widgets/my_dialog.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'; import 'package:get/get.dart'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/main.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; import '../../constant/info.dart'; import '../../controller/auth/apple_signin_controller.dart'; import '../../controller/auth/google_sign.dart'; import '../../controller/auth/login_controller.dart'; import '../home/profile/passenger_profile_page.dart'; class LoginPage extends StatelessWidget { final controller = Get.put(LoginController()); final AuthController authController = Get.put(AuthController()); LoginPage({super.key}); @override Widget build(BuildContext context) { Get.put(LoginController()); return GetBuilder( builder: (controller) => MyScafolld( title: 'Login'.tr, isleading: false, body: [ if (box.read(BoxName.agreeTerms) != 'agreed') agreedPage() else if (box.read(BoxName.countryCode) == null) CountryPicker() else if (box.read(BoxName.locationPermission) != 'true') locationPermissionDialog() else SingleChildScrollView( child: Padding( padding: const EdgeInsets.all(8.0), child: Column( children: [ Center( child: Container( decoration: AppStyle.boxDecoration1, height: Get.height * .7, width: Get.width * .9, child: Column( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Image.asset( 'assets/images/logo.gif', height: Get.width * .3, width: Get.width * .3, fit: BoxFit.fill, ), Container( decoration: AppStyle.boxDecoration1, height: Get.height * .3, width: Get.width * .8, child: Center( child: Text( 'Sign in with Google for easier email and name entry' .tr, textAlign: TextAlign.center, style: AppStyle.title, ), ), ), MyElevatedButton( title: 'Sign In by Google'.tr, onPressed: () async { await GoogleSignInHelper.signInFromLogin(); }, kolor: AppColor.blueColor, ), !Platform.isAndroid ? GestureDetector( onTap: () async { User? user = await authController.signInWithApple(); if (user != null) { box.write(BoxName.passengerID, user.uid); box.write(BoxName.email, user.email); await Get.put(LoginController()) .loginUsingCredentials( box .read(BoxName.passengerID) .toString(), box.read(BoxName.email).toString(), ); // Navigate to another screen or perform other actions } else {} }, child: Container( padding: const EdgeInsets.symmetric( horizontal: 16, vertical: 10), decoration: BoxDecoration( color: Colors.black, borderRadius: BorderRadius.circular(8), ), child: Row( mainAxisSize: MainAxisSize.min, children: [ const Icon( Icons.apple, color: Colors.white, size: 24, ), const SizedBox(width: 8), Text( 'Sign in with Apple'.tr, style: const TextStyle( color: Colors.white, fontSize: 16, fontWeight: FontWeight.w500, ), ), ], ), ), ) : const SizedBox(), ], ), )), SizedBox( height: Get.height * .1, ), // Text( // 'if you dont have account'.tr, // style: AppStyle.subtitle, // ), // AnimatedTextKit( // onTap: () => Get.to(() => SmsSignupEgypt()), // animatedTexts: [ // TypewriterAnimatedText( // 'Register'.tr, // textStyle: AppStyle.headTitle2, // speed: const Duration(milliseconds: 200), // ), // ], // totalRepeatCount: 4, // pause: const Duration(milliseconds: 200), // displayFullTextOnTap: true, // stopPauseOnTap: true, // ), // const Spacer(), const SizedBox( height: 100, ), ], ), ), ) ], ), ); } Padding agreedPage() { return Padding( padding: const EdgeInsets.all(16), child: SingleChildScrollView( child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Image.asset( 'assets/images/notepad.png', width: Get.width * .2, ), SizedBox( width: Get.width * .7, child: Text( 'Accept Ride\'s Terms & Review Privacy Notice'.tr, style: AppStyle.headTitle2, ), ), ], ), const SizedBox( height: 30, ), RichText( text: TextSpan( text: 'By selecting "I Agree" below, I have reviewed and agree to the Terms of Use and acknowledge the ' .tr, style: AppStyle.title, children: [ TextSpan( text: 'Privacy Notice'.tr, style: const TextStyle( decoration: TextDecoration.underline, color: AppColor.blueColor), recognizer: TapGestureRecognizer() ..onTap = () { Get.defaultDialog( title: ''.tr, content: const SizedBox( height: 400, width: 400, child: SingleChildScrollView( child: HtmlWidget(AppInformation.privacyPolicy), ), )); }), TextSpan( text: '. I am at least 18 years of age.'.tr, ), ], ), ), const SizedBox( height: 100, ), GetBuilder( builder: (controller) => Column( children: [ Row( children: [ Checkbox.adaptive( autofocus: true, tristate: true, splashRadius: 25, activeColor: AppColor.primaryColor, value: controller.isAgreeTerms, onChanged: (value) => controller.changeAgreeTerm(), ), Text( 'I Agree'.tr, style: controller.isAgreeTerms ? AppStyle.title : AppStyle.title .copyWith(color: AppColor.accentColor), ), ], ), MyElevatedButton( title: 'Submit'.tr, onPressed: () => controller.saveAgreementTerms()), ], ), ) ], ), ), ); } locationPermissionDialog() { return GetBuilder(builder: (controller) { 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 your precise location to find the nearest available driver and provide accurate pickup and dropoff information. You can manage this in Settings.' .tr, textAlign: TextAlign.center, style: AppStyle.title, ), MyElevatedButton( title: 'Next'.tr, onPressed: () async { // if (box.read(BoxName.locationPermission) != 'true') { // Get.put(MyDialog()).getDialog( // 'Location Permission is requiered for find drivers' // .tr, // 'You can just manage your account!'.tr, () { // Get.back(); // Get.to(() { // PassengerProfilePage(); // }); // }); // } else { await controller.getLocationPermission(); // } }, kolor: AppColor.greenColor, ) ], ), ), ), ), ); }); } }