@ -1,15 +1,21 @@
 
			
		
	
		
		
			
				
					
					import  ' dart:async ' ; import  ' dart:async ' ;  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					import  ' package:easy_localization/easy_localization.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:flutter/animation.dart ' ; import  ' package:flutter/animation.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:flutter/foundation.dart ' ; import  ' package:flutter/foundation.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:flutter/material.dart ' ; import  ' package:flutter/material.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:flutter/rendering.dart ' ; import  ' package:flutter/rendering.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:flutter/services.dart ' ; import  ' package:flutter/services.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:get_it/get_it.dart ' ; import  ' package:get_it/get_it.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/core/app_state.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/core/cache_consts.dart ' ; import  ' package:hmg_patient_app_new/core/cache_consts.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/core/dependencies.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/core/enums.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/core/utils/size_utils.dart ' ; import  ' package:hmg_patient_app_new/core/utils/size_utils.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/extensions/string_extensions.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/extensions/widget_extensions.dart ' ; import  ' package:hmg_patient_app_new/extensions/widget_extensions.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/features/authentication/authentication_view_model.dart ' ; import  ' package:hmg_patient_app_new/features/authentication/authentication_view_model.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/generated/locale_keys.g.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/services/cache_service.dart ' ; import  ' package:hmg_patient_app_new/services/cache_service.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/theme/colors.dart ' ; import  ' package:hmg_patient_app_new/theme/colors.dart ' ;  
			
		
	
		
		
			
				
					
					import  ' package:hmg_patient_app_new/widgets/appbar/app_bar_widget.dart ' ; import  ' package:hmg_patient_app_new/widgets/appbar/app_bar_widget.dart ' ;  
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -53,7 +59,8 @@ class OTPWidget extends StatefulWidget {
 
			
		
	
		
		
			
				
					
					  final  FocusNode ?  focusNode ; 
  final  FocusNode ?  focusNode ; 
 
			
		
	
		
		
			
				
					
					  final  AnimatedSwitcherTransitionBuilder ?  pinTextAnimatedSwitcherTransition ; 
  final  AnimatedSwitcherTransitionBuilder ?  pinTextAnimatedSwitcherTransition ; 
 
			
		
	
		
		
			
				
					
					  final  Duration  pinTextAnimatedSwitcherDuration ; 
  final  Duration  pinTextAnimatedSwitcherDuration ; 
 
			
		
	
		
		
			
				
					
					  final  TextDirection  textDirection ; 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					  / /  final  TextDirection  textDirection ; 
 
			
		
	
		
		
			
				
					
					  final  TextInputType  keyboardType ; 
  final  TextInputType  keyboardType ; 
 
			
		
	
		
		
			
				
					
					  final  EdgeInsets  pinBoxOuterPadding ; 
  final  EdgeInsets  pinBoxOuterPadding ; 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -74,7 +81,6 @@ class OTPWidget extends StatefulWidget {
 
			
		
	
		
		
			
				
					
					    this . onTextChanged , 
    this . onTextChanged , 
 
			
		
	
		
		
			
				
					
					    this . autoFocus  =  false , 
    this . autoFocus  =  false , 
 
			
		
	
		
		
			
				
					
					    this . focusNode , 
    this . focusNode , 
 
			
		
	
		
		
			
				
					
					    this . textDirection  =  TextDirection . ltr , 
 
			
		
	
		
		
			
				
					
					    this . keyboardType  =  TextInputType . number , 
    this . keyboardType  =  TextInputType . number , 
 
			
		
	
		
		
			
				
					
					    this . pinBoxOuterPadding  =  const  EdgeInsets . symmetric ( horizontal:  4.0 ) , 
    this . pinBoxOuterPadding  =  const  EdgeInsets . symmetric ( horizontal:  4.0 ) , 
 
			
		
	
		
		
			
				
					
					    this . pinBoxColor  =  Colors . white , 
    this . pinBoxColor  =  Colors . white , 
 
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -182,17 +188,9 @@ class OTPWidgetState extends State<OTPWidget> with SingleTickerProviderStateMixi
 
			
		
	
		
		
			
				
					
					        widget . controller ! . clear ( ) ; 
        widget . controller ! . clear ( ) ; 
 
			
		
	
		
		
			
				
					
					      } 
      } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					      / /  Remove  focus  from  the  input 
 
			
		
	
		
		
			
				
					
					      if  ( focusNode . hasFocus )  { 
      if  ( focusNode . hasFocus )  { 
 
			
		
	
		
		
			
				
					
					        focusNode . unfocus ( ) ; 
        focusNode . unfocus ( ) ; 
 
			
		
	
		
		
			
				
					
					      } 
      } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					      / /  Optionally  refocus  after  a  short  delay  to  allow  user  to  re - enter  OTP 
 
			
		
	
		
		
			
				
					
					      Future . delayed ( const  Duration ( milliseconds:  100 ) ,  ( )  { 
 
			
		
	
		
		
			
				
					
					        if  ( mounted  & &  widget . autoFocus )  { 
 
			
		
	
		
		
			
				
					
					          FocusScope . of ( context ) . requestFocus ( focusNode ) ; 
 
			
		
	
		
		
			
				
					
					        } 
 
			
		
	
		
		
			
				
					
					      } ) ; 
 
			
		
	
		
		
			
				
					
					    } 
    } 
 
			
		
	
		
		
			
				
					
					  } 
  } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -402,58 +400,6 @@ class OTPWidgetState extends State<OTPWidget> with SingleTickerProviderStateMixi
 
			
		
	
		
		
			
				
					
					    ) ; 
    ) ; 
 
			
		
	
		
		
			
				
					
					  } 
  } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  / /  Widget  _buildPinCode ( int  i ,  BuildContext  context )  { 
 
			
		
	
		
		
			
				
					
					  / /    Color  pinBoxColor  =  widget . pinBoxColor ; 
 
			
		
	
		
		
			
				
					
					  / / 
 
			
		
	
		
		
			
				
					
					  / /    if  ( widget . hasError )  { 
 
			
		
	
		
		
			
				
					
					  / /      pinBoxColor  =  widget . errorBorderColor ; 
 
			
		
	
		
		
			
				
					
					  / /    }  else  if  ( i  <  text . length )  { 
 
			
		
	
		
		
			
				
					
					  / /      pinBoxColor  =  AppColors . blackBgColor ;  / /  Custom  color  for  filled  boxes 
 
			
		
	
		
		
			
				
					
					  / /    }  else  { 
 
			
		
	
		
		
			
				
					
					  / /      pinBoxColor  =  widget . pinBoxColor ; 
 
			
		
	
		
		
			
				
					
					  / /    } 
 
			
		
	
		
		
			
				
					
					  / / 
 
			
		
	
		
		
			
				
					
					  / /    / /  Change  color  to  success  when  all  fields  are  complete 
 
			
		
	
		
		
			
				
					
					  / /    if  ( text . length  = =  widget . maxLength )  { 
 
			
		
	
		
		
			
				
					
					  / /      pinBoxColor  =  AppColors . successColor ; 
 
			
		
	
		
		
			
				
					
					  / /    } 
 
			
		
	
		
		
			
				
					
					  / / 
 
			
		
	
		
		
			
				
					
					  / /    EdgeInsets  insets ; 
 
			
		
	
		
		
			
				
					
					  / /    if  ( i  = =  0 )  { 
 
			
		
	
		
		
			
				
					
					  / /      insets  =  EdgeInsets . only ( 
 
			
		
	
		
		
			
				
					
					  / /        left:  0 , 
 
			
		
	
		
		
			
				
					
					  / /        top:  widget . pinBoxOuterPadding . top , 
 
			
		
	
		
		
			
				
					
					  / /        right:  widget . pinBoxOuterPadding . right , 
 
			
		
	
		
		
			
				
					
					  / /        bottom:  widget . pinBoxOuterPadding . bottom , 
 
			
		
	
		
		
			
				
					
					  / /      ) ; 
 
			
		
	
		
		
			
				
					
					  / /    }  else  if  ( i  = =  strList . length  -  1 )  { 
 
			
		
	
		
		
			
				
					
					  / /      insets  =  EdgeInsets . only ( 
 
			
		
	
		
		
			
				
					
					  / /        left:  widget . pinBoxOuterPadding . left , 
 
			
		
	
		
		
			
				
					
					  / /        top:  widget . pinBoxOuterPadding . top , 
 
			
		
	
		
		
			
				
					
					  / /        right:  0 , 
 
			
		
	
		
		
			
				
					
					  / /        bottom:  widget . pinBoxOuterPadding . bottom , 
 
			
		
	
		
		
			
				
					
					  / /      ) ; 
 
			
		
	
		
		
			
				
					
					  / /    }  else  { 
 
			
		
	
		
		
			
				
					
					  / /      insets  =  widget . pinBoxOuterPadding ; 
 
			
		
	
		
		
			
				
					
					  / /    } 
 
			
		
	
		
		
			
				
					
					  / / 
 
			
		
	
		
		
			
				
					
					  / /    return  AnimatedContainer ( 
 
			
		
	
		
		
			
				
					
					  / /      duration:  const  Duration ( milliseconds:  200 ) , 
 
			
		
	
		
		
			
				
					
					  / /      curve:  Curves . easeInOut , 
 
			
		
	
		
		
			
				
					
					  / /      key:  ValueKey < String > ( " container $ i " ) , 
 
			
		
	
		
		
			
				
					
					  / /      alignment:  Alignment . center , 
 
			
		
	
		
		
			
				
					
					  / /      padding:  EdgeInsets . symmetric ( vertical:  4.0 ,  horizontal:  1.0 ) , 
 
			
		
	
		
		
			
				
					
					  / /      margin:  insets , 
 
			
		
	
		
		
			
				
					
					  / /      decoration:  RoundedRectangleBorder ( ) . toSmoothCornerDecoration ( 
 
			
		
	
		
		
			
				
					
					  / /        color:  pinBoxColor , 
 
			
		
	
		
		
			
				
					
					  / /        borderRadius:  widget . pinBoxRadius , 
 
			
		
	
		
		
			
				
					
					  / /      ) , 
 
			
		
	
		
		
			
				
					
					  / /      width:  widget . pinBoxWidth , 
 
			
		
	
		
		
			
				
					
					  / /      height:  widget . pinBoxHeight , 
 
			
		
	
		
		
			
				
					
					  / /      child:  _animatedTextBox ( strList [ i ] ,  i ) , 
 
			
		
	
		
		
			
				
					
					  / /    ) ; 
 
			
		
	
		
		
			
				
					
					  / /  } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  Widget  _animatedTextBox ( String  text ,  int  i )  { 
  Widget  _animatedTextBox ( String  text ,  int  i )  { 
 
			
		
	
		
		
			
				
					
					    if  ( widget . pinTextAnimatedSwitcherTransition  ! =  null )  { 
    if  ( widget . pinTextAnimatedSwitcherTransition  ! =  null )  { 
 
			
		
	
		
		
			
				
					
					      return  AnimatedSwitcher ( 
      return  AnimatedSwitcher ( 
 
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -586,6 +532,7 @@ class _OTPVerificationScreenState extends State<OTPVerificationScreen> {
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  @ override 
  @ override 
 
			
		
	
		
		
			
				
					
					  Widget  build ( BuildContext  context )  { 
  Widget  build ( BuildContext  context )  { 
 
			
		
	
		
		
			
				
					
					    AuthenticationViewModel  authVM  =  context . read < AuthenticationViewModel > ( ) ; 
 
			
		
	
		
		
			
				
					
					    return  Scaffold ( 
    return  Scaffold ( 
 
			
		
	
		
		
			
				
					
					      backgroundColor:  AppColors . scaffoldBgColor , 
      backgroundColor:  AppColors . scaffoldBgColor , 
 
			
		
	
		
		
			
				
					
					      appBar:  CustomAppBar ( 
      appBar:  CustomAppBar ( 
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -601,19 +548,22 @@ class _OTPVerificationScreenState extends State<OTPVerificationScreen> {
 
			
		
	
		
		
			
				
					
					          child:  Column ( 
          child:  Column ( 
 
			
		
	
		
		
			
				
					
					            crossAxisAlignment:  CrossAxisAlignment . start , 
            crossAxisAlignment:  CrossAxisAlignment . start , 
 
			
		
	
		
		
			
				
					
					            children:  [ 
            children:  [ 
 
			
		
	
		
		
			
				
					
					              SizedBox ( height:  40. h ) , 
              SizedBox ( height:  10. h ) , 
 
			
				
				
			
		
	
		
		
			
				
					
					              Text ( 
              LocaleKeys . otpVerification . tr ( ) . toText24 ( isBold:  true ) , 
 
			
				
				
			
		
	
		
		
			
				
					
					                ' OTP Verification ' , 
              SizedBox ( height:  20. h ) , 
 
			
				
				
			
		
	
		
		
			
				
					
					                style:  TextStyle ( fontSize:  24. fSize ,  fontWeight:  FontWeight . bold ) , 
              Wrap ( 
 
			
				
				
			
		
	
		
		
			
				
					
					              ) , 
                spacing:  4. h , 
 
			
				
				
			
		
	
		
		
			
				
					
					              SizedBox ( height:  16. h ) , 
                runSpacing:  8.0 , 
 
			
				
				
			
		
	
		
		
			
				
					
					              Text ( 
                children:  [ 
 
			
				
				
			
		
	
		
		
			
				
					
					                ' We have sent you the OTP code on  ${ _getMaskedPhoneNumber ( ) }  via SMS for registration verification ' , 
                  LocaleKeys . weHaveSendOTP . tr ( ) . toText16 ( color:  AppColors . inputLabelTextColor ) , 
 
			
				
				
			
		
	
		
		
			
				
					
					                style:  TextStyle ( fontSize:  16. fSize ,  color:  Colors . grey ) , 
                  _getMaskedPhoneNumber ( ) . toText16 ( color:  AppColors . inputLabelTextColor ,  isBold:  true ) , 
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					                  LocaleKeys . via . tr ( ) . toText16 ( color:  AppColors . inputLabelTextColor ) , 
 
			
		
	
		
		
			
				
					
					                  authVM . loginTypeEnum . displayName . toText16 ( color:  AppColors . inputLabelTextColor ) , 
 
			
		
	
		
		
			
				
					
					                  LocaleKeys . forRegistrationVerification . tr ( ) . toText16 ( color:  AppColors . inputLabelTextColor ) , 
 
			
		
	
		
		
			
				
					
					                ] , 
 
			
		
	
		
		
			
				
					
					              ) , 
              ) , 
 
			
		
	
		
		
			
				
					
					              SizedBox ( height:  40. h ) , 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					              / /  OTP  Input  Fields  using  new  OTP  Widget 
              SizedBox ( height:  16. h ) , 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					              Center ( 
              Center ( 
 
			
		
	
		
		
			
				
					
					                child:  OTPWidget ( 
                child:  OTPWidget ( 
 
			
		
	
		
		
			
				
					
					                  maxLength:  _otpLength , 
                  maxLength:  _otpLength , 
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -635,38 +585,32 @@ class _OTPVerificationScreenState extends State<OTPVerificationScreen> {
 
			
		
	
		
		
			
				
					
					                  ) , 
                  ) , 
 
			
		
	
		
		
			
				
					
					                ) , 
                ) , 
 
			
		
	
		
		
			
				
					
					              ) , 
              ) , 
 
			
		
	
		
		
			
				
					
					
              SizedBox ( height:  32. h ) , 
 
			
				
				
			
		
	
		
		
			
				
					
					              const  SizedBox ( height:  32 ) , 
 
			
		
	
		
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					              / /  Resend  OTP 
              / /  Resend  OTP 
 
			
		
	
		
		
			
				
					
					              Row ( 
              Row ( 
 
			
		
	
		
		
			
				
					
					                mainAxisAlignment:  MainAxisAlignment . center , 
                mainAxisAlignment:  MainAxisAlignment . center , 
 
			
		
	
		
		
			
				
					
					                children:  [ 
                children:  [ 
 
			
		
	
		
		
			
				
					
					                  const  Text ( " Didn't receive it?  " ) , 
                  LocaleKeys . didntReceiveIt . tr ( ) . toText16 ( color:  AppColors . inputLabelTextColor ) , 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					                  SizedBox ( width:  5. h ) , 
 
			
		
	
		
		
			
				
					
					                  if  ( _resendTime  >  0 ) 
                  if  ( _resendTime  >  0 ) 
 
			
		
	
		
		
			
				
					
					                    Builder ( 
                    Builder ( 
 
			
		
	
		
		
			
				
					
					                      / /  Use  a  Builder  to  easily  calculate  minutes  and  seconds  inline 
 
			
		
	
		
		
			
				
					
					                      builder:  ( context )  { 
                      builder:  ( context )  { 
 
			
		
	
		
		
			
				
					
					                        final  minutes  =  ( _resendTime  ~ /  60 ) 
                        final  minutes  =  ( _resendTime  ~ /  60 ) . toString ( ) . padLeft ( 2 ,  ' 0 ' ) ; 
 
			
				
				
			
		
	
		
		
			
				
					
					                            . toString ( ) 
                        final  seconds  =  ( _resendTime  %  60 ) . toString ( ) . padLeft ( 2 ,  ' 0 ' ) ; 
 
			
				
				
			
		
	
		
		
			
				
					
					                            . padLeft ( 2 ,  ' 0 ' ) ;  / /  Integer  division  for  minutes           final  seconds  =  ( _resendTime  %  60 ) . toString ( ) . padLeft ( 2 ,  ' 0 ' ) ;  / /  Modulo  for  remaining  seconds 
                        return  Row ( 
 
			
				
				
			
		
	
		
		
			
				
					
					                        final  seconds  =  ( _resendTime  %  60 ) . toString ( ) . padLeft ( 2 ,  ' 0 ' ) ;  / /  Modulo  for  remaining  seconds  / /  < - - -  HERE  IT  IS 
                          children:  [ 
 
			
				
				
			
		
	
		
		
			
				
					
					                        return  Text ( 
                            LocaleKeys . resendIn . tr ( ) . toText16 ( color:  AppColors . inputLabelTextColor ) , 
 
			
				
				
			
		
	
		
		
			
				
					
					                          ' resend in ( $ minutes : $ seconds ).  ' , 
                            SizedBox ( width:  2. h ) , 
 
			
				
				
			
		
	
		
		
			
				
					
					                          style:  const  TextStyle ( color:  Colors . grey ) , 
                            '  ( $ minutes : $ seconds ).  ' . toText16 ( color:  AppColors . inputLabelTextColor ) 
 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					                          ] , 
 
			
		
	
		
		
			
				
					
					                        ) ; 
                        ) ; 
 
			
		
	
		
		
			
				
					
					                      } , 
                      } , 
 
			
		
	
		
		
			
				
					
					                    ) 
                    ) 
 
			
		
	
		
		
			
				
					
					                  else 
                  else 
 
			
		
	
		
		
			
				
					
					                    GestureDetector ( 
                    GestureDetector ( 
 
			
		
	
		
		
			
				
					
					                      onTap:  _resendOtp , 
                      onTap:  _resendOtp , 
 
			
		
	
		
		
			
				
					
					                      child:  const  Text ( 
                      child:  LocaleKeys . resendOTP . tr ( ) . toText16 ( color:  AppColors . primaryRedColor ) , 
 
			
				
				
			
		
	
		
		
			
				
					
					                        ' Resend ' , 
 
			
		
	
		
		
			
				
					
					                        style:  TextStyle ( 
 
			
		
	
		
		
			
				
					
					                          color:  AppColors . primaryRedColor , 
 
			
		
	
		
		
			
				
					
					                          fontWeight:  FontWeight . bold , 
 
			
		
	
		
		
			
				
					
					                        ) , 
 
			
		
	
		
		
			
				
					
					                      ) , 
 
			
		
	
		
		
	
		
		
			
				
					
					                    ) , 
                    ) , 
 
			
		
	
		
		
			
				
					
					                ] , 
                ] , 
 
			
		
	
		
		
			
				
					
					              ) , 
              ) , 
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -678,7 +622,6 @@ class _OTPVerificationScreenState extends State<OTPVerificationScreen> {
 
			
		
	
		
		
			
				
					
					  } 
  } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					  void  _verifyOtp ( String  otp )  { 
  void  _verifyOtp ( String  otp )  { 
 
			
		
	
		
		
			
				
					
					    debugPrint ( ' Verifying OTP:  $ otp ' ) ; 
 
			
		
	
		
		
			
				
					
					    widget . checkActivationCode ( int . parse ( otp ) ) ; 
    widget . checkActivationCode ( int . parse ( otp ) ) ; 
 
			
		
	
		
		
			
				
					
					  } 
  } 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -689,6 +632,6 @@ class _OTPVerificationScreenState extends State<OTPVerificationScreen> {
 
			
		
	
		
		
			
				
					
					    _isVerifying  =  false ; 
    _isVerifying  =  false ; 
 
			
		
	
		
		
			
				
					
					    _otpController . text  =  otp ; 
    _otpController . text  =  otp ; 
 
			
		
	
		
		
			
				
					
					    setState ( ( )  { } ) ; 
    setState ( ( )  { } ) ; 
 
			
		
	
		
		
			
				
					
					    _onOtpChanged ( otp ) ;  / /  Ensure  verification  and  color  update  
    _onOtpChanged ( otp ) ; 
 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					  } 
  } 
 
			
		
	
		
		
			
				
					
					} }