Created
January 9, 2023 19:40
-
-
Save relwen/ecdbca0adbd3ae6f2900246a8e0a1c68 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import 'package:adan_sv/data/model/body/register_model.dart'; | |
| import 'package:adan_sv/helper/email_checker.dart'; | |
| import 'package:adan_sv/localization/language_constrants.dart'; | |
| import 'package:adan_sv/provider/auth_provider.dart'; | |
| import 'package:adan_sv/utill/color_resources.dart'; | |
| import 'package:adan_sv/utill/dimensions.dart'; | |
| import 'package:adan_sv/utill/styles.dart'; | |
| import 'package:adan_sv/view/base/custom_app_bar.dart'; | |
| import 'package:adan_sv/view/base/custom_button.dart'; | |
| import 'package:adan_sv/view/base/custom_snackbar.dart'; | |
| import 'package:adan_sv/view/screens/auth/widgets/info_field_view.dart'; | |
| import 'package:adan_sv/view/screens/auth/widgets/successfully_registered_screen.dart'; | |
| import 'package:flutter/material.dart'; | |
| import 'package:provider/provider.dart'; | |
| class RegistrationScreen extends StatefulWidget { | |
| const RegistrationScreen({Key key}) : super(key: key); | |
| @override | |
| State<RegistrationScreen> createState() => _RegistrationScreenState(); | |
| } | |
| class _RegistrationScreenState extends State<RegistrationScreen> | |
| with TickerProviderStateMixin { | |
| TabController _tabController; | |
| int selectedIndex = 0; | |
| bool gpsEnabled = false; | |
| @override | |
| void initState() { | |
| super.initState(); | |
| _tabController = TabController(length: 3, initialIndex: 0, vsync: this); | |
| _tabController?.addListener(() { | |
| switch (_tabController.index) { | |
| case 0: | |
| Provider.of<AuthProvider>(context, listen: false) | |
| .setIndexForTabBar(0, isNotify: true); | |
| break; | |
| case 1: | |
| Provider.of<AuthProvider>(context, listen: false) | |
| .setIndexForTabBar(1, isNotify: true); | |
| break; | |
| case 2: | |
| Provider.of<AuthProvider>(context, listen: false) | |
| .setIndexForTabBar(2, isNotify: true); | |
| break; | |
| } | |
| }); | |
| } | |
| @override | |
| void dispose() { | |
| _tabController?.dispose(); | |
| super.dispose(); | |
| } | |
| @override | |
| Widget build(BuildContext context) { | |
| return Scaffold( | |
| appBar: CustomAppBar( | |
| title: getTranslated('shop_application', context), | |
| isBackButtonExist: false), | |
| body: Consumer<AuthProvider>(builder: (authContext, authProvider, _) { | |
| return Column(children: [ | |
| Center( | |
| child: Container( | |
| width: MediaQuery.of(context).size.width, | |
| color: Theme.of(context).cardColor, | |
| child: TabBar( | |
| padding: EdgeInsets.symmetric( | |
| horizontal: Dimensions.PADDING_SIZE_EXTRA_LARGE), | |
| controller: _tabController, | |
| labelColor: Theme.of(context).primaryColor, | |
| unselectedLabelColor: Theme.of(context).hintColor, | |
| indicatorColor: Theme.of(context).primaryColor, | |
| indicatorWeight: 1, | |
| unselectedLabelStyle: robotoRegular.copyWith( | |
| fontSize: Dimensions.FONT_SIZE_DEFAULT, | |
| fontWeight: FontWeight.w400, | |
| ), | |
| labelStyle: robotoRegular.copyWith( | |
| fontSize: Dimensions.FONT_SIZE_DEFAULT, | |
| fontWeight: FontWeight.w700, | |
| ), | |
| tabs: [ | |
| Tab(text: getTranslated("seller_info", context)), | |
| Tab(text: getTranslated("shop_info", context)), | |
| Tab(text: getTranslated("verification", context)) | |
| ], | |
| ), | |
| ), | |
| ), | |
| SizedBox( | |
| height: Dimensions.PADDING_SIZE_SMALL, | |
| ), | |
| Expanded( | |
| child: TabBarView( | |
| controller: _tabController, | |
| children: [ | |
| InfoFieldVIew( | |
| pageIndex: 1, | |
| ), | |
| InfoFieldVIew( | |
| pageIndex: 2, | |
| ), | |
| InfoFieldVIew( | |
| pageIndex: 3, | |
| ), | |
| ], | |
| )), | |
| ]); | |
| }), | |
| bottomNavigationBar: | |
| Consumer<AuthProvider>(builder: (context, authProvider, _) { | |
| print('tab index is ====>${_tabController.index}/$selectedIndex'); | |
| return Container( | |
| height: 70, | |
| padding: EdgeInsets.all(Dimensions.PADDING_SIZE_SMALL), | |
| decoration: BoxDecoration(color: Theme.of(context).cardColor), | |
| child: (authProvider.selectionTabIndex == 0) | |
| ? CustomButton( | |
| btnTxt: getTranslated('next', context), | |
| onTap: () { | |
| if (authProvider.firstNameController.text.trim().isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated('first_name_is_required', context), | |
| context); | |
| } else if (authProvider.lastNameController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated('last_name_is_required', context), | |
| context); | |
| } else if (authProvider.emailController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated('email_is_required', context), context); | |
| } else if (EmailChecker.isNotValid( | |
| authProvider.emailController.text.trim())) { | |
| showCustomSnackBar( | |
| getTranslated('email_is_ot_valid', context), context); | |
| } else if (authProvider.phoneController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated('phone_is_required', context), context); | |
| } else if (authProvider.phoneController.text.trim().length < | |
| 8) { | |
| showCustomSnackBar( | |
| getTranslated('phone_number_is_not_valid', context), | |
| context); | |
| } else if (authProvider.passwordController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated('password_is_required', context), | |
| context); | |
| } else if (authProvider.passwordController.text | |
| .trim() | |
| .length < | |
| 8) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'password_minimum_length_is_6', context), | |
| context); | |
| } else if (authProvider.confirmPasswordController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'confirm_password_is_required', context), | |
| context); | |
| } else if (authProvider.passwordController.text.trim() != | |
| authProvider.confirmPasswordController.text.trim()) { | |
| showCustomSnackBar( | |
| getTranslated('password_is_mismatch', context), | |
| context); | |
| } else if (authProvider.sellerProfileImage == null) { | |
| showCustomSnackBar( | |
| getTranslated('profile_image_is_required', context), | |
| context); | |
| } else if (authProvider.sellerCniRecto == null) { | |
| showCustomSnackBar( | |
| getTranslated('cni_recto_is_required', context), | |
| context); | |
| } else if (authProvider.sellerCniVerso == null) { | |
| showCustomSnackBar( | |
| getTranslated('cni_verso_is_required', context), | |
| context); | |
| } else { | |
| _tabController.animateTo((_tabController.index + 1) % 2); | |
| selectedIndex = _tabController.index + 1; | |
| authProvider.setIndexForTabBar(selectedIndex); | |
| print(authProvider.selectionTabIndex); | |
| } | |
| }, | |
| ) | |
| : (authProvider.selectionTabIndex == 1) | |
| ? Row( | |
| children: [ | |
| Container( | |
| width: 120, | |
| child: CustomButton( | |
| btnTxt: getTranslated('back', context), | |
| backgroundColor: Theme.of(context).hintColor, | |
| isColor: true, | |
| onTap: () { | |
| _tabController | |
| .animateTo((_tabController.index + 1) % 2); | |
| selectedIndex = _tabController.index - 1; | |
| authProvider.setIndexForTabBar(selectedIndex); | |
| print(authProvider.selectionTabIndex); | |
| }, | |
| ), | |
| ), | |
| SizedBox(width: Dimensions.PADDING_SIZE_SMALL), | |
| authProvider.isLoading | |
| ? CircularProgressIndicator() | |
| : Expanded( | |
| child: CustomButton( | |
| btnTxt: getTranslated('next', context), | |
| onTap: !authProvider.isTermsAndCondition | |
| ? null | |
| : () { | |
| if (authProvider | |
| .firstNameController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'first_name_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .lastNameController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'last_name_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .emailController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'email_is_required', | |
| context), | |
| context); | |
| } else if (EmailChecker.isNotValid( | |
| authProvider.emailController.text | |
| .trim())) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'email_is_ot_valid', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .phoneController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'phone_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .phoneController.text | |
| .trim() | |
| .length < | |
| 8) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'phone_number_is_not_valid', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .passwordController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'password_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .passwordController.text | |
| .trim() | |
| .length < | |
| 8) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'password_minimum_length_is_6', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .confirmPasswordController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'confirm_password_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .passwordController.text | |
| .trim() != | |
| authProvider | |
| .confirmPasswordController | |
| .text | |
| .trim()) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'password_is_mismatch', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .shopNameController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'shop_name_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .shopAddressController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'shop_address_is_required', | |
| context), | |
| context); | |
| } else if (authProvider.shopLogo == | |
| null) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'shop_logo_is_required', | |
| context), | |
| context); | |
| } else if (authProvider.shopBanner == | |
| null) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'shop_banner_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .shopLocalizedPosition == | |
| null || | |
| authProvider | |
| .shopLocalizedAdress == | |
| null) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'locate_shop_before', | |
| context), | |
| context); | |
| } else { | |
| _tabController.animateTo( | |
| (_tabController.index + 1) % 3); | |
| selectedIndex = | |
| _tabController.index + 1; | |
| authProvider.setIndexForTabBar( | |
| selectedIndex); | |
| print( | |
| authProvider.selectionTabIndex); | |
| } | |
| }, | |
| ), | |
| ), | |
| ], | |
| ) | |
| : Row( | |
| children: [ | |
| Container( | |
| width: 120, | |
| child: CustomButton( | |
| btnTxt: getTranslated('back', context), | |
| backgroundColor: Theme.of(context).hintColor, | |
| isColor: true, | |
| onTap: () { | |
| _tabController | |
| .animateTo((_tabController.index + 1) % 2); | |
| selectedIndex = _tabController.index - 1; | |
| authProvider.setIndexForTabBar(selectedIndex); | |
| print(authProvider.selectionTabIndex); | |
| }, | |
| ), | |
| ), | |
| SizedBox(width: Dimensions.PADDING_SIZE_SMALL), | |
| Expanded( | |
| child: authProvider.isLoading | |
| ? CircularProgressIndicator( | |
| color: ColorResources.PRIMARY, | |
| ) | |
| : CustomButton( | |
| btnTxt: getTranslated('submit', context), | |
| onTap: !authProvider.isTermsAndCondition | |
| ? null | |
| : () { | |
| if (authProvider | |
| .firstNameController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'first_name_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .lastNameController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'last_name_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .emailController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'email_is_required', | |
| context), | |
| context); | |
| } else if (EmailChecker.isNotValid( | |
| authProvider.emailController.text | |
| .trim())) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'email_is_ot_valid', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .phoneController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'phone_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .phoneController.text | |
| .trim() | |
| .length < | |
| 8) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'phone_number_is_not_valid', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .passwordController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'password_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .passwordController.text | |
| .trim() | |
| .length < | |
| 8) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'password_minimum_length_is_6', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .confirmPasswordController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'confirm_password_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .passwordController.text | |
| .trim() != | |
| authProvider | |
| .confirmPasswordController | |
| .text | |
| .trim()) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'password_is_mismatch', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .shopNameController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'shop_name_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .shopAddressController.text | |
| .trim() | |
| .isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'shop_address_is_required', | |
| context), | |
| context); | |
| } else if (authProvider.shopLogo == | |
| null) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'shop_logo_is_required', | |
| context), | |
| context); | |
| } else if (authProvider.shopBanner == | |
| null) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'shop_banner_is_required', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .shopLocalizedPosition == | |
| null || | |
| authProvider | |
| .shopLocalizedAdress == | |
| null) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'locate_shop_before', | |
| context), | |
| context); | |
| } else if (authProvider | |
| .rccmController.text.length <= | |
| 15) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'invalid_rccm', context), | |
| context); | |
| } else if (authProvider | |
| .ifuController.text.isEmpty) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'ifu_is_required', context), | |
| context); | |
| } else if (authProvider.sellerRccm == | |
| null) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'rccm_photo_is_required', | |
| context), | |
| context); | |
| } else if (authProvider.sellerIfu == | |
| null) { | |
| showCustomSnackBar( | |
| getTranslated( | |
| 'ifu_photo_is_required', | |
| context), | |
| context); | |
| } else { | |
| RegisterModel registerModel = | |
| RegisterModel( | |
| fName: authProvider | |
| .firstNameController.text | |
| .trim(), | |
| lName: authProvider | |
| .lastNameController.text | |
| .trim(), | |
| phone: authProvider | |
| .phoneController.text | |
| .trim(), | |
| email: authProvider | |
| .emailController.text | |
| .trim(), | |
| password: authProvider | |
| .passwordController.text | |
| .trim(), | |
| confirmPassword: authProvider | |
| .confirmPasswordController | |
| .text | |
| .trim(), | |
| shopName: authProvider | |
| .shopNameController.text | |
| .trim(), | |
| shopAddress: authProvider | |
| .shopAddressController.text | |
| .trim(), | |
| location: authProvider.location, | |
| rccm: authProvider | |
| .rccmController.text | |
| .trim(), | |
| ifu: authProvider | |
| .ifuController.text | |
| .trim(), | |
| ); | |
| authProvider | |
| .registration( | |
| context, registerModel) | |
| .then((value) { | |
| if (value.response.statusCode == | |
| 200) { | |
| Navigator.of(context).pushReplacement( | |
| MaterialPageRoute( | |
| builder: (BuildContext | |
| context) => | |
| SuccessfullyRegisteredScreen())); | |
| } | |
| }); | |
| } | |
| }, | |
| ), | |
| ), | |
| ], | |
| ), | |
| ); | |
| }), | |
| ); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment