From 1af9882526ad585ec3c69199bcb98807321cf309 Mon Sep 17 00:00:00 2001 From: kishan06 Date: Sat, 13 Jul 2024 23:28:27 +0530 Subject: [PATCH] sprint 1 complete --- ios/Runner.xcodeproj/project.pbxproj | 4 + .../xcshareddata/swiftpm/Package.resolved | 15 + ios/Runner/Info.plist | 24 + lib/Common/api_urls.dart | 1 + .../ProfileTab/Settings/Settings.dart | 30 +- lib/Login/View/loginscreen.dart | 151 +++-- lib/Login/ViewModel/LoginApi.dart | 39 +- lib/Utils/Common/ImageUpload.dart | 8 +- lib/Utils/dialogs.dart | 16 +- lib/main.dart | 35 +- .../View/Business/View/tellusbusiness.dart | 343 ++++------ .../View/Individual/step2Selectactivity.dart | 588 +++++++++--------- .../View/Individual/tellusindividual.dart | 151 ++--- lib/onboarding/Signup/View/signupscreen.dart | 282 +++++---- lib/onboarding/SplashScreen.dart | 183 +----- .../forgotPass/View/ForgotPass.dart | 8 +- 16 files changed, 860 insertions(+), 1018 deletions(-) create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index fd3d0e3..5d60154 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -151,6 +151,8 @@ dependencies = ( ); name = Runner; + packageProductDependencies = ( + ); productName = Runner; productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; @@ -179,6 +181,8 @@ Base, ); mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + ); productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..70800b1 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,15 @@ +{ + "originHash" : "ca3cf5f8f83d297b47d2cb0edff3e06f294951e2e06fa55cfc82831103499b2a", + "pins" : [ + { + "identity" : "facebook-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/facebook/facebook-ios-sdk", + "state" : { + "revision" : "c19607d535864533523d1f437c84035e5fb101cf", + "version" : "14.1.0" + } + } + ], + "version" : 3 +} diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 8b03d2b..abae9b0 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -51,5 +51,29 @@ Regroup get write-only access to the user photo library NSPhotoLibraryUsageDescription Allow access to photo library + NSCameraUsageDescription + To capture profile photo please grant camera access + +CFBundleURLTypes + + + CFBundleURLSchemes + + fb803386025107790 + + + +FacebookAppID +803386025107790 +FacebookClientToken +fa69ee794ff94e50c7ddbfac1e035cb9 +FacebookDisplayName +Regroup +LSApplicationQueriesSchemes + + fbapi + fb-messenger-share-api + + diff --git a/lib/Common/api_urls.dart b/lib/Common/api_urls.dart index 0e94d49..aeb0699 100644 --- a/lib/Common/api_urls.dart +++ b/lib/Common/api_urls.dart @@ -28,6 +28,7 @@ class ApiUrls { static const googlelogin = "${baseUrl}sign-in-with-google-login"; static const applelogin = "${baseUrl}apple-login-or-registration"; + static const facebooklogin = "${baseUrl}facebook-login"; static const storeDetailsOfOAuth = "${baseUrl}update-user-account-type"; diff --git a/lib/Feed Module/Main_Screens/ProfileTab/Settings/Settings.dart b/lib/Feed Module/Main_Screens/ProfileTab/Settings/Settings.dart index 8dfdd7d..c9ce84e 100644 --- a/lib/Feed Module/Main_Screens/ProfileTab/Settings/Settings.dart +++ b/lib/Feed Module/Main_Screens/ProfileTab/Settings/Settings.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:glassmorphism/glassmorphism.dart'; @@ -9,6 +10,7 @@ import 'package:regroup/Utils/Common/blureffect.dart'; import 'package:regroup/Utils/Common/sized_box.dart'; import 'package:regroup/Utils/texts.dart'; import 'package:regroup/resources/routes/route_name.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class Settings extends StatefulWidget { const Settings({super.key}); @@ -146,18 +148,26 @@ class _SettingsState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - commonGlassContainer( - width: 140.w, - height: 40.h, - borderradius: 30.r, - opacity1: 0.05, - opacity2: 0.07, - customWidget: - Center(child: text14400white("Yes, I want to")), - border: 1), + GestureDetector( + onTap: () async { + SharedPreferences prefs = + await SharedPreferences.getInstance(); + await prefs.clear(); + Get.offAllNamed(RouteName.loginScreen); + }, + child: commonGlassContainer( + width: 130.w, + height: 40.h, + borderradius: 30.r, + opacity1: 0.05, + opacity2: 0.07, + customWidget: + Center(child: text14400white("Yes, I want to")), + border: 1), + ), Container( height: 40.h, - width: 140.w, + width: 130.w, decoration: BoxDecoration( color: Color(0xFFD90B2E), borderRadius: BorderRadius.circular(30.r), diff --git a/lib/Login/View/loginscreen.dart b/lib/Login/View/loginscreen.dart index 1f48c8d..232a523 100644 --- a/lib/Login/View/loginscreen.dart +++ b/lib/Login/View/loginscreen.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -28,9 +30,7 @@ class LoginScreen extends StatefulWidget { } class _LoginScreenState extends State { - Map? _userData; AccessToken? _accessToken; - bool _checking = true; final TextEditingController _emailController = TextEditingController(); RxBool isObscured = true.obs; final TextEditingController _passwordController = TextEditingController(); @@ -88,26 +88,17 @@ class _LoginScreenState extends State { } _checkIfisLoggedIn() async { - //user token + await _logout(); final accessToken = await FacebookAuth.instance.accessToken; - - setState(() { - _checking = false; - }); - if (accessToken != null) { print("/////////////////////////////////////////xcheck"); - print("worked"); - print(accessToken.toJson()); + final userData = await FacebookAuth.instance.getUserData(); - // _accessToken = accessToken; - setState(() { - _userData = userData; - }); + + logger.i(accessToken.token); + logger.i(userData.toString()); } else { print("/////////////////////////////////////////check"); - - print("not worked"); _login(); } } @@ -119,20 +110,21 @@ class _LoginScreenState extends State { _accessToken = result.accessToken; final userData = await FacebookAuth.instance.getUserData(); - _userData = userData; + logger.i(userData['email']); + logger.i(userData['id']); + + await LoginAPI().storeFacebookSignin( + {"facebook_auth_token": userData['id']}, + emailReceived: userData['email']); } else { print(result.status); print(result.message); } - setState(() { - _checking = false; - }); } _logout() async { await FacebookAuth.instance.logOut(); _accessToken = null; - _userData = null; setState(() {}); } @@ -404,65 +396,68 @@ class _LoginScreenState extends State { child: SizedBox( width: 220.w, child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ - GestureDetector( - onTap: () { - _loginWithApple(); - }, - child: Container( - width: 55, - height: 55, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: const Alignment(0.71, -0.70), - end: const Alignment(-0.71, 0.7), - colors: [ - Colors.white.withOpacity( - 0.07999999821186066), - Colors.white.withOpacity( - 0.12999999523162842) - ], - ), - shape: const OvalBorder( - side: BorderSide( - width: 0.50, - color: Color(0xFF434A53)), - ), - image: const DecorationImage( - image: AssetImage( - 'assets/images/png/login2.png'))), + if (Platform.isIOS) + GestureDetector( + onTap: () { + _loginWithApple(); + }, + child: Container( + width: 55, + height: 55, + decoration: ShapeDecoration( + gradient: LinearGradient( + begin: const Alignment(0.71, -0.70), + end: const Alignment(-0.71, 0.7), + colors: [ + Colors.white.withOpacity( + 0.07999999821186066), + Colors.white.withOpacity( + 0.12999999523162842) + ], + ), + shape: const OvalBorder( + side: BorderSide( + width: 0.50, + color: Color(0xFF434A53)), + ), + image: const DecorationImage( + image: AssetImage( + 'assets/images/png/login2.png'))), + ), ), - ), - const Spacer(), - GestureDetector( - onTap: () { - _loginWithGoogle(); - }, - child: Container( - width: 55, - height: 55, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: const Alignment(0.71, -0.70), - end: const Alignment(-0.71, 0.7), - colors: [ - Colors.white.withOpacity( - 0.07999999821186066), - Colors.white.withOpacity( - 0.12999999523162842) - ], - ), - shape: const OvalBorder( - side: BorderSide( - width: 0.50, - color: Color(0xFF434A53)), - ), - image: const DecorationImage( - image: AssetImage( - 'assets/images/png/login3.png'))), + // const Spacer(), + if (Platform.isAndroid) + GestureDetector( + onTap: () { + _loginWithGoogle(); + }, + child: Container( + width: 55, + height: 55, + decoration: ShapeDecoration( + gradient: LinearGradient( + begin: const Alignment(0.71, -0.70), + end: const Alignment(-0.71, 0.7), + colors: [ + Colors.white.withOpacity( + 0.07999999821186066), + Colors.white.withOpacity( + 0.12999999523162842) + ], + ), + shape: const OvalBorder( + side: BorderSide( + width: 0.50, + color: Color(0xFF434A53)), + ), + image: const DecorationImage( + image: AssetImage( + 'assets/images/png/login3.png'))), + ), ), - ), - const Spacer(), + // const Spacer(), GestureDetector( onTap: () async { _checkIfisLoggedIn(); @@ -495,7 +490,7 @@ class _LoginScreenState extends State { ), ), ), - sizedBoxHeight(100) + // sizedBoxHeight(100) ], ), ), diff --git a/lib/Login/ViewModel/LoginApi.dart b/lib/Login/ViewModel/LoginApi.dart index b221af4..c4fb274 100644 --- a/lib/Login/ViewModel/LoginApi.dart +++ b/lib/Login/ViewModel/LoginApi.dart @@ -41,18 +41,20 @@ class LoginAPI { if (accountype == "1") { print('tell us individyal'); - Get.toNamed(RouteName.tellusindividualscreen, - // arguments: { - // 'pageroute' : "mainscreen" - // } + Get.toNamed( + RouteName.tellusindividualscreen, + // arguments: { + // 'pageroute' : "mainscreen" + // } ); } else if (accountype == "2") { print('tell us business'); - Get.toNamed(RouteName.tellusbusinessscreen, - // arguments: { - // 'pageroute' : "mainscreen" - // } + Get.toNamed( + RouteName.tellusbusinessscreen, + // arguments: { + // 'pageroute' : "mainscreen" + // } ); } } else { @@ -106,6 +108,27 @@ class LoginAPI { return response; } + Future storeFacebookSignin(var data, + {String? emailReceived}) async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + final response = await NetworkApiServices() + .postApi(data, ApiUrls.facebooklogin, optionalpar: true); + if (response.status == ResponseStatus.SUCCESS) { + await prefs.setString('access-token', response.data['data']['token']); + if (response.data['data']['is_account_type_updated'] == 3) { + Get.toNamed(RouteName.verifygoogleapplepage, + arguments: {"email": emailReceived}); + return ResponseData( + "go-to-signin-via-oauth", ResponseStatus.SUCCESS); + } else { + Get.toNamed(RouteName.mainscreen); + return ResponseData("go-to-login", ResponseStatus.SUCCESS); + } + } + + return response; + } + Future storeUserDetailsWhenComingFromGoogleAppleSignin( var data) async { final response = await NetworkApiServices() diff --git a/lib/Utils/Common/ImageUpload.dart b/lib/Utils/Common/ImageUpload.dart index 2f3bc7a..94fcf99 100644 --- a/lib/Utils/Common/ImageUpload.dart +++ b/lib/Utils/Common/ImageUpload.dart @@ -53,7 +53,7 @@ class ImageUploadBottomSheet { .getImage(ImageSource.camera); onImagePicked(result); - Get.back(); + // Get.back(); }, child: Column( children: [ @@ -116,7 +116,7 @@ class ImageUploadBottomSheet { onTap: () async { var result = await FilePickerMethod().pickFile(); onImagePicked(result?.path ?? ""); - Get.back(); + // Get.back(); }, child: Column( children: [ @@ -155,7 +155,7 @@ class ImageUploadBottomSheet { .getImage(ImageSource.camera); onImagePicked(result); - Get.back(); + // Get.back(); }, child: Column( children: [ @@ -187,7 +187,7 @@ class ImageUploadBottomSheet { var result = await ImagePickerMethod() .getImage(ImageSource.gallery); onImagePicked(result); - Get.back(); + // Get.back(); }, child: Column( children: [ diff --git a/lib/Utils/dialogs.dart b/lib/Utils/dialogs.dart index 6cc75b5..065cd07 100644 --- a/lib/Utils/dialogs.dart +++ b/lib/Utils/dialogs.dart @@ -15,15 +15,13 @@ class utils { elevation: 0, backgroundColor: Colors.transparent, child: WillPopScope( - child: Container( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - CircularProgressIndicator( - color: Color(0xffc18948), - ), - ], - ), + child: const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircularProgressIndicator( + color: Color(0xffc18948), + ), + ], ), onWillPop: () async => false), ), diff --git a/lib/main.dart b/lib/main.dart index 04e728d..d1aa8d7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:io'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:firebase_core/firebase_core.dart'; @@ -45,10 +46,10 @@ class _MyAppState extends State with WidgetsBindingObserver { // final Connectivity _connectivity = Connectivity(); // late StreamSubscription _connectivitySubscription; - List _connectionStatus = [ConnectivityResult.none]; + List _connectionStatus = [ConnectivityResult.none]; final Connectivity _connectivity = Connectivity(); late StreamSubscription> _connectivitySubscription; - + // Future checkInternet() async { // final connectivityResult = await (Connectivity().checkConnectivity()); @@ -97,25 +98,25 @@ class _MyAppState extends State with WidgetsBindingObserver { // setState(() { // _connectionStatus = result; // }); - - if (result.contains(ConnectivityResult.wifi) || result.contains(ConnectivityResult.mobile)) { - setState(() { - _connectionStatus = result; - Get.back(result: true); - }); + if (result.contains(ConnectivityResult.wifi) || + result.contains(ConnectivityResult.mobile)) { + setState(() { + _connectionStatus = result; + Get.back(result: true); + }); } else { - setState(() { - _connectionStatus = result; - Get.toNamed(RouteName.nointernet); - }); + setState(() { + _connectionStatus = result; + Get.toNamed(RouteName.nointernet); + }); // Get.toNamed(RouteName.nointernet); } // ignore: avoid_print print('Connectivity changed: $_connectionStatus'); } - Future _getStoragePermission() async { + Future _getStoragePermission() async { DeviceInfoPlugin plugin = DeviceInfoPlugin(); AndroidDeviceInfo android = await plugin.androidInfo; if (android.version.sdkInt < 33) { @@ -155,13 +156,13 @@ class _MyAppState extends State with WidgetsBindingObserver { void initState() { initConnectivity(); WidgetsBinding.instance.addObserver(this); - _connectivitySubscription = + _connectivitySubscription = _connectivity.onConnectivityChanged.listen(_updateConnectionStatus); //do not remove this coomented code - // if (Platform.isAndroid) { - // _getStoragePermission(); - // } + if (Platform.isAndroid) { + _getStoragePermission(); + } super.initState(); } diff --git a/lib/onboarding/Signup/View/Business/View/tellusbusiness.dart b/lib/onboarding/Signup/View/Business/View/tellusbusiness.dart index f5a9d71..ded366e 100644 --- a/lib/onboarding/Signup/View/Business/View/tellusbusiness.dart +++ b/lib/onboarding/Signup/View/Business/View/tellusbusiness.dart @@ -38,7 +38,6 @@ class _TellusaboutBusinessState extends State { ]; String _selectedbusinesstype = ''; - // String business_type = ''; void _onItemSelected(String value) { setState(() { @@ -46,8 +45,6 @@ class _TellusaboutBusinessState extends State { }); } - // String pagename = Get.arguments["pageroute"]; - String getBusinessTypeId(String selectedBusinessType) { if (selectedBusinessType.contains("Retail")) { return '1'; @@ -91,244 +88,174 @@ class _TellusaboutBusinessState extends State { }; final data = await BusinessAPI().tellUsBusinessApi(updata); if (data.status == ResponseStatus.SUCCESS) { - // await global.setname(); Get.snackbar( "Success!", 'success!', - duration: Duration(seconds: 2), + duration: const Duration(seconds: 2), colorText: Colors.white, backgroundColor: Colors.green, - margin: EdgeInsets.all(8), + margin: const EdgeInsets.all(8), snackStyle: SnackStyle.FLOATING, snackPosition: SnackPosition.BOTTOM, ); - // if (pagename == "nextscreen") { - Get.toNamed(RouteName.businessletusunderstandstep1); - - // } else if (pagename == "mainscreen") { - // Get.toNamed(RouteName.mainscreen); - // } - + Get.toNamed(RouteName.businessletusunderstandstep1); } else if (data.status == ResponseStatus.FAILED) { Get.snackbar( "Error!", data.message, - duration: Duration(seconds: 2), + duration: const Duration(seconds: 2), colorText: Colors.white, backgroundColor: Colors.red, - margin: EdgeInsets.all(8), + margin: const EdgeInsets.all(8), snackStyle: SnackStyle.FLOATING, snackPosition: SnackPosition.BOTTOM, ); - // _controller.isTextFieldEnabled.value = true; } else { - // btnController.reset(); Get.snackbar( "Error!", data.data['message'], - duration: Duration(seconds: 2), + duration: const Duration(seconds: 2), colorText: Colors.white, backgroundColor: Colors.red, - margin: EdgeInsets.all(8), + margin: const EdgeInsets.all(8), snackStyle: SnackStyle.FLOATING, snackPosition: SnackPosition.BOTTOM, ); - // _controller.isTextFieldEnabled.value = true; } } } @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: Color.fromARGB(255, 18, 32, 47), - body: Stack(children: [ - // Positioned(top: 90, left: -30, child: CommonBlurLeftSecond()), - // Positioned(top: 300, right: -30, child: CommonBlurRightSecond()), - // Positioned(top: 490, left: -30, child: CommonBlurLeftBlue()), - // GlassmorphicContainer( - // width: MediaQuery.of(context).size.width, - // height: - // // 500.h, - // MediaQuery.of(context).size.height, - // borderRadius: 2, - // blur: 6, - // alignment: Alignment.bottomLeft, - // border: 2, - // linearGradient: LinearGradient( - // begin: Alignment.topCenter, - // end: Alignment.bottomCenter, - // colors: [ - // Color(0XFF222935).withOpacity(0.60), - // Color(0XFF222935).withOpacity(0.60), - // Color(0XFF222935).withOpacity(0.60), - // Color(0XFF222935).withOpacity(0.60), - - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // ], - // ), - // borderGradient: LinearGradient( - // begin: Alignment.topCenter, - // end: Alignment.bottomCenter, - // colors: [ - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color(0XFF222935).withOpacity(0.60), - - // Color(0XFF222935).withOpacity(0.60), - // ], - // ), - // ), - - Container( - decoration: const BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/images/png/Ellipse 1496.png"), - fit: BoxFit.fill)), - ), - - ListView(physics: ScrollPhysics(), children: [ - Padding( - padding: EdgeInsets.symmetric(horizontal: 16.w), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // const Spacer(flex: 1), - sizedBoxHeight(60.h), - Center(child: text20400white('Tell us about your business')), - sizedBoxHeight(10.w), - Center( - child: Container( - width: 154, - decoration: ShapeDecoration( - shape: RoundedRectangleBorder( - side: BorderSide( - width: 1, - strokeAlign: BorderSide.strokeAlignCenter, - color: Color(0xFF858585), - ), - ), - )), - ), - sizedBoxHeight(40.h), - text16400white('Business owner name'), - sizedBoxHeight(10.h), - CustomTextFormField( - textEditingController: businessownerController, - texttype: TextInputType.text, - hintText: "Enter your business owner name", - leadingIcon: - // const Icon(Icons.mail_outline), - Image.asset( - width: 22.w, - height: 17.h, - 'assets/images/png/user.png', - ), - // validatorText: "Enter your business owner name", - validator: (value) { - if (value!.isEmpty) { - return 'Enter your business owner name'; - } - return null; - }, - inputFormatters: [ - // LengthLimitingTextInputFormatter(20), - RemoveEmojiInputFormatter(), - FilteringTextInputFormatter.allow(RegExp('[a-zA-Z ]')) - ], - ), - sizedBoxHeight(10.h), - text16400white('Business name'), - sizedBoxHeight(10.h), - CustomTextFormField( - textEditingController: businessNameController, - texttype: TextInputType.text, - hintText: "Enter your business name", - leadingIcon: - // const Icon(Icons.mail_outline), - Image.asset( - width: 22.w, - height: 17.h, - 'assets/images/png/briefcase.png', - ), - // validatorText: "Enter your business name", - validator: (value) { - if (value!.isEmpty) { - return 'Enter your business name '; - } - return null; - }, - inputFormatters: [ - // LengthLimitingTextInputFormatter(20), - RemoveEmojiInputFormatter(), - FilteringTextInputFormatter.allow(RegExp('[a-zA-Z ]')) - ], - ), - sizedBoxHeight(10.h), - text16400white('Business location'), - sizedBoxHeight(10.h), - CustomTextFormField( - textEditingController: businesslocationController, - texttype: TextInputType.text, - hintText: "Enter your business location", - leadingIcon: - // const Icon(Icons.mail_outline), - Image.asset( - width: 22.w, - height: 17.h, - 'assets/images/png/location.png', - ), - // validatorText: "Enter your business location", - validator: (value) { - if (value!.isEmpty) { - return 'Enter your business location '; - } - return null; - }, - inputFormatters: [ - // LengthLimitingTextInputFormatter(20), - RemoveEmojiInputFormatter(), - FilteringTextInputFormatter.allow(RegExp('[a-zA-Z ]')) - ], - ), - sizedBoxHeight(10.h), - text16400white('Type of business'), - sizedBoxHeight(10.h), - CustomDropDownWidgetSignup( - header: 'Select type of business', - title: '', - listData: _businesslist, - onItemSelected: _onItemSelected, - leadingImage: - Image.asset('assets/images/png/briefcase.png'), - ), - - sizedBoxHeight(50.h), - CustomButton( - text: "Continue", - onPressed: () { - _tellUsBusinessDone(); - // if (_selectedbusinesstype.isNotEmpty) { - // Get.toNamed(RouteName.businessletusunderstandstep1); - - // // Get.to(() => BusinessPage()); - // } else { - // // Handle case where no selection is made - // utils.showToast('Please select an gender type'); - // } - }), - sizedBoxHeight(30.h), - // const Spacer( - // flex: 3, - // ) - ], - ), + return WillPopScope( + onWillPop: () { + return Future.value(false); + }, + child: Scaffold( + backgroundColor: const Color.fromARGB(255, 18, 32, 47), + body: Stack(children: [ + Container( + decoration: const BoxDecoration( + image: DecorationImage( + image: AssetImage("assets/images/png/Ellipse 1496.png"), + fit: BoxFit.fill)), ), - ]) - ])); + ListView(physics: const ScrollPhysics(), children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + sizedBoxHeight(60.h), + Center( + child: text20400white('Tell us about your business')), + sizedBoxHeight(10.w), + Center( + child: Container( + width: 154, + decoration: const ShapeDecoration( + shape: RoundedRectangleBorder( + side: BorderSide( + width: 1, + strokeAlign: BorderSide.strokeAlignCenter, + color: Color(0xFF858585), + ), + ), + )), + ), + sizedBoxHeight(40.h), + text16400white('Business owner name'), + sizedBoxHeight(10.h), + CustomTextFormField( + textEditingController: businessownerController, + texttype: TextInputType.text, + hintText: "Enter your business owner name", + leadingIcon: Image.asset( + width: 22.w, + height: 17.h, + 'assets/images/png/user.png', + ), + validator: (value) { + if (value!.isEmpty) { + return 'Enter your business owner name'; + } + return null; + }, + inputFormatters: [ + RemoveEmojiInputFormatter(), + FilteringTextInputFormatter.allow(RegExp('[a-zA-Z ]')) + ], + ), + sizedBoxHeight(10.h), + text16400white('Business name'), + sizedBoxHeight(10.h), + CustomTextFormField( + textEditingController: businessNameController, + texttype: TextInputType.text, + hintText: "Enter your business name", + leadingIcon: Image.asset( + width: 22.w, + height: 17.h, + 'assets/images/png/briefcase.png', + ), + validator: (value) { + if (value!.isEmpty) { + return 'Enter your business name '; + } + return null; + }, + inputFormatters: [ + RemoveEmojiInputFormatter(), + FilteringTextInputFormatter.allow(RegExp('[a-zA-Z ]')) + ], + ), + sizedBoxHeight(10.h), + text16400white('Business location'), + sizedBoxHeight(10.h), + CustomTextFormField( + textEditingController: businesslocationController, + texttype: TextInputType.text, + hintText: "Enter your business location", + leadingIcon: Image.asset( + width: 22.w, + height: 17.h, + 'assets/images/png/location.png', + ), + validator: (value) { + if (value!.isEmpty) { + return 'Enter your business location '; + } + return null; + }, + inputFormatters: [ + RemoveEmojiInputFormatter(), + FilteringTextInputFormatter.allow(RegExp('[a-zA-Z ]')) + ], + ), + sizedBoxHeight(10.h), + text16400white('Type of business'), + sizedBoxHeight(10.h), + CustomDropDownWidgetSignup( + header: 'Select type of business', + title: '', + listData: _businesslist, + onItemSelected: _onItemSelected, + leadingImage: + Image.asset('assets/images/png/briefcase.png'), + ), + sizedBoxHeight(50.h), + CustomButton( + text: "Continue", + onPressed: () { + _tellUsBusinessDone(); + }), + sizedBoxHeight(30.h), + ], + ), + ), + ]) + ])), + ); } } diff --git a/lib/onboarding/Signup/View/Individual/step2Selectactivity.dart b/lib/onboarding/Signup/View/Individual/step2Selectactivity.dart index 9ccccf1..78ec2fb 100644 --- a/lib/onboarding/Signup/View/Individual/step2Selectactivity.dart +++ b/lib/onboarding/Signup/View/Individual/step2Selectactivity.dart @@ -74,7 +74,7 @@ class _SelectIndividualActivityState extends State { Color _getGradientColor(int id) { if (_selectedIndices.contains(id)) { - return Color(0XFFD90B2E); // Selected color + return const Color(0XFFD90B2E); // Selected color } return Colors.transparent; // Default color } @@ -108,7 +108,7 @@ class _SelectIndividualActivityState extends State { return GestureDetector( onTap: () => FocusManager.instance.primaryFocus?.unfocus(), child: Scaffold( - backgroundColor: Color.fromARGB(255, 18, 32, 47), + backgroundColor: const Color.fromARGB(255, 18, 32, 47), bottomNavigationBar: Padding( padding: const EdgeInsets.only(bottom: 10, left: 16, right: 16), child: CustomButton( @@ -129,311 +129,309 @@ class _SelectIndividualActivityState extends State { // RouteName.individualgroupstep3); }), ), - body: FutureBuilder( - future: Getonboard().getIndividualactivity(), - builder: (ctx, snapshot) { - if (snapshot.data == null) { - return const Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [Center(child: CircularProgressIndicator())], - ); - } - if (snapshot.connectionState == ConnectionState.done) { - if (snapshot.hasError) { - return Center( - child: Text( - '${snapshot.error} occured', - style: TextStyle(fontSize: 18.spMin), - ), + body: SafeArea( + child: FutureBuilder( + future: Getonboard().getIndividualactivity(), + builder: (ctx, snapshot) { + if (snapshot.data == null) { + return const Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [Center(child: CircularProgressIndicator())], ); } - } + if (snapshot.connectionState == ConnectionState.done) { + if (snapshot.hasError) { + return Center( + child: Text( + '${snapshot.error} occured', + style: TextStyle(fontSize: 18.spMin), + ), + ); + } + } - return Stack( - children: [ - Positioned(top: 220, left: -30, child: CommonBlurLeftSecond()), - Positioned( - top: 450, right: -30, child: CommonBlurRightSecond()), - Positioned(top: 530, left: -30, child: CommonBlurLeftBlue()), - GlassmorphicContainer( - width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height, - borderRadius: 2, - blur: 6, - alignment: Alignment.bottomLeft, - border: 2, - linearGradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - Color(0XFF222935).withOpacity(0.60), - Color(0XFF222935).withOpacity(0.60), - Color(0XFF222935).withOpacity(0.60), - Color(0XFF222935).withOpacity(0.60), - - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - ], - ), - borderGradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - Color(0XFF222935).withOpacity(0.60), - - Color(0XFF222935).withOpacity(0.60), - ], - ), - child: Padding( - padding: - EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), - child: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Align( - alignment: Alignment.topRight, - child: GestureDetector( - onTap: () { - Get.toNamed(RouteName.communitycommitscreen); - }, - child: Text( - 'Skip', - style: TextStyle( - color: Colors.white, - fontSize: 16.sp, - fontFamily: 'Helvetica', - fontWeight: FontWeight.w400, - decoration: TextDecoration.underline, - decorationColor: Colors.white), + return Stack( + children: [ + const Positioned( + top: 220, left: -30, child: CommonBlurLeftSecond()), + const Positioned( + top: 450, right: -30, child: CommonBlurRightSecond()), + const Positioned( + top: 530, left: -30, child: CommonBlurLeftBlue()), + GlassmorphicContainer( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + borderRadius: 2, + blur: 6, + alignment: Alignment.bottomLeft, + border: 2, + linearGradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + const Color(0XFF222935).withOpacity(0.60), + const Color(0XFF222935).withOpacity(0.60), + const Color(0XFF222935).withOpacity(0.60), + const Color(0XFF222935).withOpacity(0.60), + ], + ), + borderGradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + const Color(0XFF222935).withOpacity(0.60), + const Color(0XFF222935).withOpacity(0.60), + ], + ), + child: Padding( + padding: + EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Align( + alignment: Alignment.topRight, + child: GestureDetector( + onTap: () { + Get.toNamed(RouteName.communitycommitscreen); + }, + child: Text( + 'Skip', + style: TextStyle( + color: Colors.white, + fontSize: 16.sp, + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400, + decoration: TextDecoration.underline, + decorationColor: Colors.white), + ), ), ), - ), - sizedBoxHeight(30.h), - Align( - alignment: Alignment.center, - child: text16400white('Step 1 of 3')), - sizedBoxHeight(20.h), - Container( - width: double.infinity, - height: 25.h, - decoration: ShapeDecoration( - shape: RoundedRectangleBorder( - side: BorderSide( - width: 1, color: Color(0xFF434A53)), - borderRadius: BorderRadius.circular(30), + sizedBoxHeight(30.h), + Align( + alignment: Alignment.center, + child: text16400white('Step 1 of 3')), + sizedBoxHeight(20.h), + Container( + width: double.infinity, + height: 25.h, + decoration: ShapeDecoration( + shape: RoundedRectangleBorder( + side: const BorderSide( + width: 1, color: Color(0xFF434A53)), + borderRadius: BorderRadius.circular(30), + ), ), - ), - child: Padding( - padding: EdgeInsets.symmetric( - horizontal: 8.w, vertical: 2.h), - child: Row( - children: [ - Container( - width: 120.w, - height: 15.h, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: Alignment(0.98, -0.21), - end: Alignment(-0.98, 0.21), - colors: [ - Color(0xA5D90B2E), - Color(0x42D90B2E) - ], - ), - shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.circular(30), - ), - ), - child: Row( - mainAxisAlignment: - MainAxisAlignment.end, - children: [ - Container( - width: 15, - height: 15, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: Alignment(0.98, -0.21), - end: Alignment(-0.98, 0.21), - colors: [ - Color(0xFFD90B2E), - Color(0x60D90B2E) - ], - ), - shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.circular(30), - ), - ), - ) - ], - )) - ], - ), - ), - ), - sizedBoxHeight(40.h), - indiactivityobj!.data == null || - indiactivityobj!.data!.isEmpty - ? _buildNoDataBody(context) - : Column( - crossAxisAlignment: CrossAxisAlignment.start, + child: Padding( + padding: EdgeInsets.symmetric( + horizontal: 8.w, vertical: 2.h), + child: Row( children: [ - Center( - child: _selectedIndices.isEmpty - ? text20400white( - 'What is your main activity ?') - : text20400white( - 'What else do you do?')), - sizedBoxHeight(10.w), - Center( - child: Container( - width: 154.w, + Container( + width: 120.w, + height: 15.h, decoration: ShapeDecoration( + gradient: const LinearGradient( + begin: Alignment(0.98, -0.21), + end: Alignment(-0.98, 0.21), + colors: [ + Color(0xA5D90B2E), + Color(0x42D90B2E) + ], + ), shape: RoundedRectangleBorder( - side: BorderSide( - width: 1, - strokeAlign: - BorderSide.strokeAlignCenter, - color: Color(0xFF858585), + borderRadius: + BorderRadius.circular(30), + ), + ), + child: Row( + mainAxisAlignment: + MainAxisAlignment.end, + children: [ + Container( + width: 15, + height: 15, + decoration: ShapeDecoration( + gradient: const LinearGradient( + begin: Alignment(0.98, -0.21), + end: Alignment(-0.98, 0.21), + colors: [ + Color(0xFFD90B2E), + Color(0x60D90B2E) + ], + ), + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(30), + ), + ), + ) + ], + )) + ], + ), + ), + ), + sizedBoxHeight(40.h), + indiactivityobj!.data == null || + indiactivityobj!.data!.isEmpty + ? _buildNoDataBody(context) + : Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Center( + child: _selectedIndices.isEmpty + ? text20400white( + 'What is your main activity ?') + : text20400white( + 'What else do you do?')), + sizedBoxHeight(10.w), + Center( + child: Container( + width: 154.w, + decoration: const ShapeDecoration( + shape: RoundedRectangleBorder( + side: BorderSide( + width: 1, + strokeAlign: BorderSide + .strokeAlignCenter, + color: Color(0xFF858585), + ), ), ), ), ), - ), - sizedBoxHeight(30.h), - GridView.builder( - physics: ScrollPhysics(), - shrinkWrap: true, - gridDelegate: - SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: - 3, // Number of items in each row - crossAxisSpacing: 12 - .w, // Horizontal spacing between items - mainAxisSpacing: 12 - .h, // Vertical spacing between items + sizedBoxHeight(30.h), + GridView.builder( + physics: const ScrollPhysics(), + shrinkWrap: true, + gridDelegate: + SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: + 3, // Number of items in each row + crossAxisSpacing: 12 + .w, // Horizontal spacing between items + mainAxisSpacing: 12 + .h, // Vertical spacing between items + ), + itemCount: + indiactivityobj!.data!.length, + itemBuilder: (context, index) { + return ActivityContainer( + index: indiactivityobj! + .data![index].id!, + titleString: indiactivityobj! + .data![index].name!, + image: indiactivityobj! + .data![index].image, + // 'assets/images/svg/individualact7.svg', + isSelected: _selectedIndices + .contains(indiactivityobj! + .data![index].id!), + gradientColor: _getGradientColor( + indiactivityobj! + .data![index].id!), + onTap: _onContainerTap, + ); + }, ), - itemCount: indiactivityobj!.data!.length, - itemBuilder: (context, index) { - return ActivityContainer( - index: - indiactivityobj!.data![index].id!, - titleString: indiactivityobj! - .data![index].name!, - image: indiactivityobj! - .data![index].image, - // 'assets/images/svg/individualact7.svg', - isSelected: _selectedIndices.contains( - indiactivityobj! - .data![index].id!), - gradientColor: _getGradientColor( - indiactivityobj! - .data![index].id!), - onTap: _onContainerTap, - ); - }, - ), - sizedBoxHeight(30.h), - text20400FCFCFC("Add other activity"), - sizedBoxHeight(25.h), - CustomTextFormField( - textEditingController: - otheractivitycontroller, - texttype: TextInputType.text, - hintText: "Enter other activity", - // leadingIcon: - // // const Icon(Icons.mail_outline), - // Image.asset( - // width: 22.w, - // height: 17.h, - // 'assets/images/png/user.png', - // ), - // validatorText: "Enter your full name", - validator: (value) { - if (value!.isEmpty) { - return 'Enter your full name '; - } - return null; - }, - inputFormatters: [ - // LengthLimitingTextInputFormatter(20), - RemoveEmojiInputFormatter(), - FilteringTextInputFormatter.allow( - RegExp('[a-zA-Z ]')) - ], - ), - // CustomDropDownRadio( - // header: "", - // title: "", - // listData: [ - // "American football", - // "Archery", - // "Athletics", - // "Baseball", - // "Basketball", - // "Boxing", - // "Canoeing", - // "Clay pigeon shooting", - // "Climbing", - // "Combat sports", - // "Cricket", - // "Dodgeball", - // "Equestrian", - // "Fencing", - // "Gaelic football", - // "Golf", - // "Gymnastics", - // "Handball", - // "Hockey", - // "Lacrosse", - // "Modern biathlon and pentathlon", - // "Netball", - // "Orienteering", - // "Pool and snooker", - // "Powerlifting", - // "Rifle", - // "Rugby league", - // "Rugby union", - // "Sailing", - // "Snowsports", - // "Squash", - // "Surfing", - // "Swimming", - // "Softball", - // "Table tennis", - // "Tennis", - // "Touch rugby", - // "Trampoline", - // "Triathlon", - // "Ultimate frisbee", - // "Volleyball", - // "Water polo", - // "Windsurfing" - // ], - // onItemSelected: (p0) {}, - // leadingImage: SizedBox()), - // // Spacer(flex: 1), + sizedBoxHeight(30.h), + text20400FCFCFC("Add other activity"), + sizedBoxHeight(25.h), + CustomTextFormField( + textEditingController: + otheractivitycontroller, + texttype: TextInputType.text, + hintText: "Enter other activity", + // leadingIcon: + // // const Icon(Icons.mail_outline), + // Image.asset( + // width: 22.w, + // height: 17.h, + // 'assets/images/png/user.png', + // ), + // validatorText: "Enter your full name", + validator: (value) { + if (value!.isEmpty) { + return 'Enter your full name '; + } + return null; + }, + inputFormatters: [ + // LengthLimitingTextInputFormatter(20), + RemoveEmojiInputFormatter(), + FilteringTextInputFormatter.allow( + RegExp('[a-zA-Z ]')) + ], + ), + // CustomDropDownRadio( + // header: "", + // title: "", + // listData: [ + // "American football", + // "Archery", + // "Athletics", + // "Baseball", + // "Basketball", + // "Boxing", + // "Canoeing", + // "Clay pigeon shooting", + // "Climbing", + // "Combat sports", + // "Cricket", + // "Dodgeball", + // "Equestrian", + // "Fencing", + // "Gaelic football", + // "Golf", + // "Gymnastics", + // "Handball", + // "Hockey", + // "Lacrosse", + // "Modern biathlon and pentathlon", + // "Netball", + // "Orienteering", + // "Pool and snooker", + // "Powerlifting", + // "Rifle", + // "Rugby league", + // "Rugby union", + // "Sailing", + // "Snowsports", + // "Squash", + // "Surfing", + // "Swimming", + // "Softball", + // "Table tennis", + // "Tennis", + // "Touch rugby", + // "Trampoline", + // "Triathlon", + // "Ultimate frisbee", + // "Volleyball", + // "Water polo", + // "Windsurfing" + // ], + // onItemSelected: (p0) {}, + // leadingImage: SizedBox()), + // // Spacer(flex: 1), - sizedBoxHeight(35.h), - ], - ) - ], + sizedBoxHeight(35.h), + ], + ) + ], + ), ), ), - ), - ) - ], - ); - }, + ) + ], + ); + }, + ), ), // @@ -471,12 +469,12 @@ class ActivityContainer extends StatelessWidget { return GestureDetector( onTap: () => onTap(index), child: Container( - width: 110.w, - height: 120.h, + // width: 110.w, + // height: 120.h, decoration: ShapeDecoration( gradient: LinearGradient( begin: const Alignment(0.98, -0.21), - end: Alignment(-0.98, 0.21), + end: const Alignment(-0.98, 0.21), colors: isSelected ? [ gradientColor.withOpacity(0.80), @@ -490,12 +488,12 @@ class ActivityContainer extends StatelessWidget { ], ), shape: RoundedRectangleBorder( - side: BorderSide(width: 1, color: Color(0xFF434A53)), + side: const BorderSide(width: 1, color: Color(0xFF434A53)), borderRadius: BorderRadius.circular(10), ), ), child: Padding( - padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h), + padding: EdgeInsets.symmetric(horizontal: 0.w, vertical: 10.h), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -523,7 +521,7 @@ class ActivityContainer extends StatelessWidget { width: 50.w, height: 50.h, ), - Spacer(flex: 3), + const Spacer(flex: 3), SizedBox( child: Text( titleString, diff --git a/lib/onboarding/Signup/View/Individual/tellusindividual.dart b/lib/onboarding/Signup/View/Individual/tellusindividual.dart index 774d30a..cd2ff02 100644 --- a/lib/onboarding/Signup/View/Individual/tellusindividual.dart +++ b/lib/onboarding/Signup/View/Individual/tellusindividual.dart @@ -36,9 +36,6 @@ class _TellusaboutIndividualState extends State { TextEditingController datecontroller = TextEditingController(); TextEditingController locationcontroller = TextEditingController(); - // String pagename = Get.arguments["pageroute"]; - - DateTime? _selectedDate; final photographController = TextEditingController(); @@ -46,9 +43,9 @@ class _TellusaboutIndividualState extends State { Get.put(ProfileImageController()); Future _selectDate(BuildContext context) async { - DateTime yesterday = DateTime.now().subtract(Duration(days: 1)); + DateTime yesterday = DateTime.now().subtract(const Duration(days: 1)); DateTime eighteenYearsAgo = - DateTime.now().subtract(Duration(days: 365 * 18)); + DateTime.now().subtract(const Duration(days: 365 * 18)); final ThemeData customTheme = Theme.of(context).copyWith( colorScheme: const ColorScheme.light( @@ -60,7 +57,7 @@ class _TellusaboutIndividualState extends State { onSecondary: Colors.white), textButtonTheme: TextButtonThemeData( style: TextButton.styleFrom( - foregroundColor: Color(0xFFD90B2E), + foregroundColor: const Color(0xFFD90B2E), ), )); @@ -141,36 +138,20 @@ class _TellusaboutIndividualState extends State { filename: path.basename(editProfileImage.profilePicPath.value), ); } - // else { - // imageFile = await Helper.assetImageToMultipartFile( - // "assets/images/png/camera.png", "profile"); - // } FormData formData = FormData.fromMap({ "full_name": fullNameController.text, "username": userNameController.text, "date_of_birth": datecontroller.text, "gender": _selectedgendertype, - 'profile_photo': - // editProfileImage.profilePicPath.value.isNotEmpty ? - imageFile, - // : null, + 'profile_photo': imageFile, 'location': locationcontroller.text, }); - print("formData is $formData"); - log(formData.toString()); final data = await Onboard().PosttellusIndividual(formData); if (data.status == ResponseStatus.SUCCESS) { - utils.showToast("tell us done Successfully!"); Get.back(); - // Get.toNamed(RouteName.individualprofilestep1); - // if (pagename == "nextscreen") { - Get.toNamed(RouteName.individualactivitystep2); - - // } else if (pagename == "mainscreen") { - // Get.toNamed(RouteName.mainscreen); - // } + Get.toNamed(RouteName.individualactivitystep2); } else { Get.back(); return utils.showToast(data.message); @@ -182,54 +163,16 @@ class _TellusaboutIndividualState extends State { return GestureDetector( onTap: () => FocusManager.instance.primaryFocus?.unfocus(), child: Scaffold( - backgroundColor: Color.fromARGB(255, 18, 32, 47), + backgroundColor: const Color.fromARGB(255, 18, 32, 47), body: Stack( children: [ - // Positioned(top: 70, left: -30, child: CommonBlurLeftSecond()), - // Positioned(top: 310, right: -30, child: CommonBlurRightSecond()), - // Positioned(top: 510, left: -30, child: CommonBlurLeftBlue()), - // GlassmorphicContainer( - // width: MediaQuery.of(context).size.width, - // height: - // // 500.h, - // MediaQuery.of(context).size.height, - // borderRadius: 2, - // blur: 6, - // alignment: Alignment.bottomLeft, - // border: 2, - // linearGradient: LinearGradient( - // begin: Alignment.topCenter, - // end: Alignment.bottomCenter, - // colors: [ - // Color(0XFF222935).withOpacity(0.60), - // Color(0XFF222935).withOpacity(0.60), - // Color(0XFF222935).withOpacity(0.60), - // Color(0XFF222935).withOpacity(0.60), - - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // ], - // ), - // borderGradient: LinearGradient( - // begin: Alignment.topCenter, - // end: Alignment.bottomCenter, - // colors: [ - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // // Color.fromARGB(255, 18, 32, 47).withOpacity(0.50), - // Color(0XFF222935).withOpacity(0.60), - - // Color(0XFF222935).withOpacity(0.60), - // ], - // ), Container( decoration: const BoxDecoration( image: DecorationImage( image: AssetImage("assets/images/png/Ellipse 1496.png"), fit: BoxFit.fill)), ), - ListView(physics: ScrollPhysics(), children: [ + ListView(physics: const ScrollPhysics(), children: [ Padding( padding: EdgeInsets.symmetric(horizontal: 16.w), child: Column( @@ -242,7 +185,7 @@ class _TellusaboutIndividualState extends State { Center( child: Container( width: 154, - decoration: ShapeDecoration( + decoration: const ShapeDecoration( shape: RoundedRectangleBorder( side: BorderSide( width: 1, @@ -281,8 +224,8 @@ class _TellusaboutIndividualState extends State { shape: BoxShape.circle, color: Colors.transparent, border: Border.all( - color: - Color(0XFFD90B2E).withOpacity(0.50), + color: const Color(0XFFD90B2E) + .withOpacity(0.50), width: 2), ), ), @@ -294,8 +237,8 @@ class _TellusaboutIndividualState extends State { shape: BoxShape.circle, color: Colors.transparent, border: Border.all( - color: - Color(0XFFD90B2E).withOpacity(0.50), + color: const Color(0XFFD90B2E) + .withOpacity(0.50), width: 2), ), ), @@ -305,38 +248,32 @@ class _TellusaboutIndividualState extends State { shape: BoxShape.circle, color: Colors.transparent, border: Border.all( - color: Color(0XFFD90B2E) + color: const Color(0XFFD90B2E) .withOpacity(0.50), width: 2), ), - child: Obx(() => - // editProfileImage - // .profilePicPath.value != - // '' - // ? - editProfileImage - .profilePicPath.value != - '' - ? ClipOval( - child: SizedBox.fromSize( - size: - Size.fromRadius(50.r), - child: Image( - image: FileImage( - File( - editProfileImage - .profilePicPath - .value, - ), - ), - fit: BoxFit.cover, - width: 200.w, - height: 200.h, + child: Obx(() => editProfileImage + .profilePicPath.value != + '' + ? ClipOval( + child: SizedBox.fromSize( + size: Size.fromRadius(50.r), + child: Image( + image: FileImage( + File( + editProfileImage + .profilePicPath + .value, ), ), - ) - : Image.asset( - "assets/images/png/camera.png") + fit: BoxFit.cover, + width: 200.w, + height: 200.h, + ), + ), + ) + : Image.asset( + "assets/images/png/camera.png") // : Image.asset( // "assets/images/png/camera.png") )), @@ -476,22 +413,12 @@ class _TellusaboutIndividualState extends State { CustomButton( text: "Continue", onPressed: () { - if ( - // isValid! - // fullNameController.text.isBlank! && - // userNameController.text.isBlank! && - // datecontroller.text.isBlank! && - // _selectedgendertype.isEmpty && - // locationcontroller.text.isBlank! && - // editProfileImage.profilePicPath.value == - // '' - fullNameController.text.isBlank! || - userNameController.text.isBlank! || - datecontroller.text.isBlank! || - _selectedgendertype.isEmpty || - locationcontroller.text.isBlank! || - editProfileImage.profilePicPath.value == - '') { + if (fullNameController.text.isBlank! || + userNameController.text.isBlank! || + datecontroller.text.isBlank! || + _selectedgendertype.isEmpty || + locationcontroller.text.isBlank! || + editProfileImage.profilePicPath.value == '') { utils.showToast('Please fill all fields'); } else { TellusUploadData(); diff --git a/lib/onboarding/Signup/View/signupscreen.dart b/lib/onboarding/Signup/View/signupscreen.dart index 590d9cb..cd41d17 100644 --- a/lib/onboarding/Signup/View/signupscreen.dart +++ b/lib/onboarding/Signup/View/signupscreen.dart @@ -1,11 +1,18 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_facebook_auth/flutter_facebook_auth.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:regroup/Common/base_manager.dart'; +import 'package:regroup/Login/ViewModel/LoginApi.dart'; +import 'package:regroup/Utils/Common/AppleOAuthService.dart'; import 'package:regroup/Utils/Common/CommonDropdown.dart'; import 'package:regroup/Utils/Common/CustomTextformfield.dart'; import 'package:regroup/Utils/Common/CustomNextButton.dart'; +import 'package:regroup/Utils/Common/googleOAuthService.dart'; import 'package:regroup/Utils/Common/sized_box.dart'; import 'package:regroup/Utils/dialogs.dart'; import 'package:regroup/Utils/texts.dart'; @@ -24,13 +31,10 @@ class _SignupScreenState extends State { TextEditingController emailidcontroller = TextEditingController(); TextEditingController passwordController = TextEditingController(); TextEditingController confirmpasscontroller = TextEditingController(); + AccessToken? _accessToken; final GlobalKey _formKey = GlobalKey(); - - List _dropdownProductItems = [ - 'Individual', - 'Business', - ]; + GoogleAuthService googleSigninController = Get.put(GoogleAuthService()); final Map _accountTypeMap = { 'Individual': 1, @@ -45,35 +49,92 @@ class _SignupScreenState extends State { }); } - // void _Signincheck() async { - // if (emailidcontroller.text.isBlank! || - // passwordController.text.isBlank! || - // confirmpasscontroller.text.isBlank!) { - // Get.snackbar( - // 'Error', - // 'Enter your credentials', - // snackPosition: SnackPosition.BOTTOM, - // backgroundColor: Colors.red, - // colorText: Colors.white, - // ); - // } else if (!emailidcontroller.text.isEmail) { - // Get.snackbar( - // 'Error', - // 'Enter a valid e-mail address', - // snackPosition: SnackPosition.BOTTOM, - // backgroundColor: Colors.red, - // colorText: Colors.white, - // ); - // } else if (_selectedAccountType == 'Individual') { - // print('individual selected'); - // Get.toNamed(RouteName.verifyusercreen, arguments: _selectedAccountType); - // } else if (_selectedAccountType == 'Business') { - // print('business selected'); - // Get.toNamed(RouteName.verifyusercreen, arguments: _selectedAccountType); - // } else { - // utils.showToast('Please select an account type'); - // } - // } + _loginWithApple() { + AppleOAuthService().logIn(); + } + + _loginWithGoogle() { + googleSigninController.handleGoogleSignIn().then((value) async { + if (value != 'Google Sign-In canceled') { + final resp = await LoginAPI().storeGoogleSignin( + {"google_access_token": value, "one_signal_player_id": "ABCD"}); + if (resp.message == "go-to-signin-via-oauth") { + Get.toNamed(RouteName.verifygoogleapplepage, + arguments: {"email": resp.data}); + } else if (value == null) { + Get.snackbar( + 'Error', + 'Google Sign-In canceled', + snackPosition: SnackPosition.BOTTOM, + backgroundColor: Colors.red, + colorText: Colors.white, + ); + } else { + Get.snackbar( + "Success!", + 'Login successful!', + duration: const Duration(seconds: 2), + colorText: Colors.white, + backgroundColor: Colors.green, + margin: const EdgeInsets.all(8), + snackStyle: SnackStyle.FLOATING, + snackPosition: SnackPosition.BOTTOM, + ); + //Get.toNamed(RouteName.mainscreen); + logger.d("go to login"); + } + } else { + Get.snackbar( + 'Error', + 'Google Sign-In canceled', + snackPosition: SnackPosition.BOTTOM, + backgroundColor: Colors.red, + colorText: Colors.white, + ); + } + }); + } + + _checkIfisLoggedIn() async { + await _logout(); + final accessToken = await FacebookAuth.instance.accessToken; + if (accessToken != null) { + print("/////////////////////////////////////////xcheck"); + + final userData = await FacebookAuth.instance.getUserData(); + + logger.i(accessToken.token); + logger.i(userData.toString()); + } else { + print("/////////////////////////////////////////check"); + _login(); + } + } + + _login() async { + final LoginResult result = await FacebookAuth.instance.login(); + + if (result.status == LoginStatus.success) { + _accessToken = result.accessToken; + + final userData = await FacebookAuth.instance.getUserData(); + logger.i(userData['email']); + logger.i(userData['id']); + + await LoginAPI().storeFacebookSignin( + {"facebook_auth_token": userData['id']}, + emailReceived: userData['email']); + } else { + print(result.status); + print(result.message); + } + } + + _logout() async { + await FacebookAuth.instance.logOut(); + _accessToken = null; + setState(() {}); + } Uploadata() async { utils.loader(); @@ -97,31 +158,6 @@ class _SignupScreenState extends State { 'accountypenumber': accountTypeValue }); - // if (selectedCategory == "Individual") { - // Get.toNamed(RouteName.verifyusercreen, - // arguments: - // { - // "emailid" : emailidcontroller.text, - // "password" : passwordController.text, - // "accounttype" : selectedCategory, - // 'accountypenumber' : accountTypeValue - - // } - - // ); - // } else if (selectedCategory == "Individual") { - // Get.toNamed(RouteName.verifyusercreen, - // arguments: - // { - // "emailid" : emailidcontroller.text, - // "password" : passwordController.text, - // "accounttype" : selectedCategory, - // 'accountypenumber' : accountTypeValue - - // } - // ); - // } - return utils.showToast(data.message); } else { Get.back(); @@ -397,11 +433,74 @@ class _SignupScreenState extends State { child: SizedBox( width: 220.w, child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceAround, children: [ + if (Platform.isIOS) + GestureDetector( + onTap: () { + _loginWithApple(); + }, + child: Container( + width: 55, + height: 55, + decoration: ShapeDecoration( + gradient: LinearGradient( + begin: const Alignment( + 0.71, -0.70), + end: const Alignment( + -0.71, 0.7), + colors: [ + Colors.white.withOpacity( + 0.07999999821186066), + Colors.white.withOpacity( + 0.12999999523162842) + ], + ), + shape: const OvalBorder( + side: BorderSide( + width: 0.50, + color: Color(0xFF434A53)), + ), + image: const DecorationImage( + image: AssetImage( + 'assets/images/png/login2.png'))), + ), + ), + if (Platform.isAndroid) + GestureDetector( + onTap: () { + _loginWithGoogle(); + }, + child: Container( + width: 55, + height: 55, + decoration: ShapeDecoration( + gradient: LinearGradient( + begin: const Alignment( + 0.71, -0.70), + end: const Alignment( + -0.71, 0.7), + colors: [ + Colors.white.withOpacity( + 0.07999999821186066), + Colors.white.withOpacity( + 0.12999999523162842) + ], + ), + shape: const OvalBorder( + side: BorderSide( + width: 0.50, + color: Color(0xFF434A53)), + ), + image: const DecorationImage( + image: AssetImage( + 'assets/images/png/login3.png'))), + ), + ), GestureDetector( - onTap: () { - Get.toNamed( - RouteName.verifygoogleapplepage); + onTap: () async { + _checkIfisLoggedIn(); }, child: Container( width: 55, @@ -426,66 +525,9 @@ class _SignupScreenState extends State { ), image: const DecorationImage( image: AssetImage( - 'assets/images/png/login2.png'))), + 'assets/images/png/login4.png'))), ), ), - const Spacer(), - GestureDetector( - onTap: () { - Get.toNamed( - RouteName.verifygoogleapplepage); - }, - child: Container( - width: 55, - height: 55, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: const Alignment( - 0.71, -0.70), - end: - const Alignment(-0.71, 0.7), - colors: [ - Colors.white.withOpacity( - 0.07999999821186066), - Colors.white.withOpacity( - 0.12999999523162842) - ], - ), - shape: const OvalBorder( - side: BorderSide( - width: 0.50, - color: Color(0xFF434A53)), - ), - image: const DecorationImage( - image: AssetImage( - 'assets/images/png/login3.png'))), - ), - ), - const Spacer(), - Container( - width: 55, - height: 55, - decoration: ShapeDecoration( - gradient: LinearGradient( - begin: - const Alignment(0.71, -0.70), - end: const Alignment(-0.71, 0.7), - colors: [ - Colors.white.withOpacity( - 0.07999999821186066), - Colors.white.withOpacity( - 0.12999999523162842) - ], - ), - shape: const OvalBorder( - side: BorderSide( - width: 0.50, - color: Color(0xFF434A53)), - ), - image: const DecorationImage( - image: AssetImage( - 'assets/images/png/login4.png'))), - ), ], ), ), diff --git a/lib/onboarding/SplashScreen.dart b/lib/onboarding/SplashScreen.dart index 39e1d18..99c4a71 100644 --- a/lib/onboarding/SplashScreen.dart +++ b/lib/onboarding/SplashScreen.dart @@ -22,159 +22,38 @@ class SplashScreen extends StatefulWidget { } class _SplashScreenState extends State { - // var _connectionStatus; - final Connectivity _connectivity = Connectivity(); - List _connectionStatus = [ConnectivityResult.none]; - - // Future checkInternet() async { - // final connectivityResult = await (Connectivity().checkConnectivity()); - - // if (connectivityResult == ConnectivityResult.wifi || - // connectivityResult == ConnectivityResult.mobile) { - // setState(() { - // _connectionStatus = connectivityResult; - // }); - // } else { - // setState(() { - // _connectionStatus = connectivityResult; - - // }); - // } - // } - - Future initConnectivity() async { - late List result; - try { - result = await _connectivity.checkConnectivity(); - } on PlatformException catch (e) { - log('Couldn\'t check connectivity status', error: e); - return; - } - - if (!mounted) { - return Future.value(null); - } - - return _updateConnectionStatus(result); - } - - Future _updateConnectionStatus(List result) async { - setState(() { - _connectionStatus = result; - }); - - // ignore: avoid_print - print('Connectivity changed: $_connectionStatus'); - } - @override void initState() { - // TODO: implement initState super.initState(); - initConnectivity(); - log(_connectionStatus.toString()); - // Future.delayed(Duration(seconds: 2), () async { - // if (_connectionStatus.contains(ConnectivityResult.none)) { - // var result = await Get.to(NoInternet()); - // if (result != null && result) { - // Timer(const Duration(seconds: 1), () async { - // SharedPreferences prefs = await SharedPreferences.getInstance(); + Future.delayed(const Duration(seconds: 2), () async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + token = prefs.getString('access-token'); + emailid = prefs.getString('email'); + myusername = prefs.getString('username'); + fullname = prefs.getString('fullname'); + phonenumber = prefs.getString('phone'); - // token = prefs.getString('access-token'); - // emailid = prefs.getString('email'); - // myusername = prefs.getString('username'); - // fullname = prefs.getString('fullname'); - // phonenumber = prefs.getString('phone'); + if (token == null || token!.isEmpty) { + Get.toNamed(RouteName.onboarding1); + } else { + await Getuserdetails().Getuser().then((value) { + if (getuserobj?.data?.userData?.isProfileUpdated == 0) { + String? accountype = + getuserobj?.data?.userData?.principalTypeXid.toString(); - // if (token == null || token!.isEmpty) { - // Get.toNamed(RouteName.onboarding1); - // } else { - // Getuserdetails().Getuser().then((value) { - // print(getuserobj!.data!.userData!.isProfileUpdated!); - // // .then((value) { - // if (getuserobj?.data?.userData?.isProfileUpdated == 0) { - // String? accountype = - // getuserobj?.data?.userData?.principalTypeXid.toString(); - - // if (accountype == "1") { - // Get.toNamed(RouteName.tellusindividualscreen, - // arguments: {'pageroute': "mainscreen"}); - // } else if (accountype == "2") { - // Get.toNamed(RouteName.tellusbusinessscreen, - // arguments: {'pageroute': "mainscreen"}); - // } - // } else { - // Get.toNamed(RouteName.mainscreen); - // } - // }); - // // print(getuserobj!.data!.userData!.isProfileUpdated!); - - // // // .then((value) { - // // if (getuserobj?.data?.userData?.isProfileUpdated == 0) { - // // String? accountype = - // // getuserobj?.data?.userData?.principalTypeXid.toString(); - - // // if (accountype == "1") { - // // Get.toNamed(RouteName.tellusindividualscreen, - // // arguments: { - // // 'pageroute' : "mainscreen" - // // } - // // ); - // // } else if (accountype == "2") { - // // Get.toNamed(RouteName.tellusbusinessscreen); - // // } - // // } else { - // // Get.toNamed(RouteName.mainscreen); - // // } - // // } - // // ); - // } - // }); - // } - // } else { - // Timer(const Duration(seconds: 2), () async { - // print('this is second'); - - // SharedPreferences prefs = await SharedPreferences.getInstance(); - - // token = prefs.getString('access-token'); - // emailid = prefs.getString('email'); - // myusername = prefs.getString('username'); - // fullname = prefs.getString('fullname'); - // phonenumber = prefs.getString('phone'); - - // if (token == null || token!.isEmpty) { - // Get.toNamed(RouteName.onboarding1); - // } else { - // Getuserdetails().Getuser().then((value) { - // print(getuserobj!.data!.userData!.isProfileUpdated!); - // // .then((value) { - // if (getuserobj?.data?.userData?.isProfileUpdated == 0) { - // String? accountype = - // getuserobj?.data?.userData?.principalTypeXid.toString(); - - // if (accountype == "1") { - // Get.toNamed(RouteName.tellusindividualscreen, - // arguments: {'pageroute': "mainscreen"}); - // } else if (accountype == "2") { - // Get.toNamed(RouteName.tellusbusinessscreen, - // arguments: {'pageroute': "mainscreen"}); - // } - // } else { - // Get.toNamed(RouteName.mainscreen); - // } - // }); - - // // } - // // ); - // } - // }); - // } - // }); - - Future.delayed(Duration(seconds: 2), () async { - Get.toNamed(RouteName.onboarding1); + if (accountype == "1") { + Get.toNamed(RouteName.tellusindividualscreen, + arguments: {'pageroute': "mainscreen"}); + } else if (accountype == "2") { + Get.toNamed(RouteName.tellusbusinessscreen, + arguments: {'pageroute': "mainscreen"}); + } + } else { + Get.toNamed(RouteName.mainscreen); + } + }); + } }); } @@ -190,11 +69,11 @@ class _SplashScreenState extends State { begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ - Color(0xff009DAB).withOpacity(0.25), - Color(0xff35798C).withOpacity(0.44), - Color(0xffD90B2E).withOpacity(0.33), - Color(0xffD90B2E).withOpacity(0.52), - Color(0xffD90B2E).withOpacity(0.59), + const Color(0xff009DAB).withOpacity(0.25), + const Color(0xff35798C).withOpacity(0.44), + const Color(0xffD90B2E).withOpacity(0.33), + const Color(0xffD90B2E).withOpacity(0.52), + const Color(0xffD90B2E).withOpacity(0.59), ], )), child: Column( diff --git a/lib/onboarding/forgotPass/View/ForgotPass.dart b/lib/onboarding/forgotPass/View/ForgotPass.dart index 63978f9..670b1e4 100644 --- a/lib/onboarding/forgotPass/View/ForgotPass.dart +++ b/lib/onboarding/forgotPass/View/ForgotPass.dart @@ -52,11 +52,9 @@ class _ForgotPassState extends State { snackPosition: SnackPosition.BOTTOM, ); prefs.setString('email', emailController.text); - prefs.setInt( - 'principal_xid', resp.data['data']['iam_principal_xid']); + prefs.setInt('principal_xid', resp.data['data']['iam_principal_xid']); Future.delayed(Duration(seconds: 1), () { - Get.toNamed(RouteName.forgotOtp, - arguments: emailController.text); + Get.toNamed(RouteName.forgotOtp, arguments: emailController.text); }); // print('success'); } else if (resp.status == ResponseStatus.FAILED) { @@ -134,7 +132,7 @@ class _ForgotPassState extends State { ), ), ), - hintText: "loremipsum@gmail.comess", + // hintText: "loremipsum@gmail.comess", validator: (value) { if (value!.isEmpty) { return 'Enter your e-mail address';