Untitled
unknown
plain_text
3 years ago
6.8 kB
11
Indexable
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:pin_code_fields/pin_code_fields.dart';
import 'package:responsive_sizer/responsive_sizer.dart';
import 'package:staff_app/route_manager/route_name.dart';
import 'package:staff_app/utility/base_views/base_button.dart';
import 'package:staff_app/utility/base_views/base_colors.dart';
import 'package:staff_app/Utility/sizes.dart';
import 'package:staff_app/Utility/base_utility.dart';
import 'package:staff_app/language_classes/language_constants.dart';
import 'package:staff_app/utility/validators.dart';
import 'package:staff_app/view/login_screen/login_ctrl.dart';
import 'package:staff_app/view/otp_screen/otp_ctrl.dart';
class OTPScreen extends StatefulWidget {
final String mobile;
final bool? isFromActivation;
const OTPScreen({Key? key, required this.mobile, this.isFromActivation = false}) : super(key: key);
@override
State<OTPScreen> createState() => _OTPScreenState();
}
class _OTPScreenState extends State<OTPScreen> {
OtpCtrl controller = Get.put(OtpCtrl());
LoginCtrl loginCtrl = Get.find<LoginCtrl>();
@override
Widget build(BuildContext context) {
return Form(
key: controller.formKey,
child: Scaffold(
backgroundColor: BaseColors.backgroundColor,
body: SafeArea(
bottom: false,
child: Stack(
children: [
Container(
height: MediaQuery.of(context).size.height*0.17,
alignment: Alignment.center,
child: Text(translate(context).sms_verification, style: Style.montserratMediumStyle().copyWith(color: BaseColors.primaryColor, fontSize: onBoardingHeadingTs),),
),
Container(
width: MediaQuery.of(context).size.width,
height: Get.height - MediaQuery.of(context).size.height*0.18,
margin: EdgeInsets.only(top: MediaQuery.of(context).size.height*0.15),
decoration: const BoxDecoration(
borderRadius: BorderRadius.only(topLeft: Radius.circular(25),
topRight: Radius.circular(25),
),
color: Colors.white
),
padding: const EdgeInsets.all(25),
child: ListView(
shrinkWrap: true,
children: [
SizedBox(height: MediaQuery.of(context).size.height*0.05,),
Text(translate(context).otp_sent,style: Style.montserratBoldStyle().copyWith(color: BaseColors.textBlackColor, fontSize: onBoardingTitleTs),),
SizedBox(height: 0.5.h),
Text(translate(context).enter_4_digit_otp,style: Style.montserratRegularStyle().copyWith(color: const Color(0xff6B6B6B), fontSize: onBoardingSubTitleTs, height: 1.5),),
SizedBox(height: 0.3.h),
Text(widget.mobile,style: Style.montserratRegularStyle().copyWith(color: const Color(0xff6B6B6B), fontSize: onBoardingSubTitleTs, height: 1.5),),
SizedBox(height: 1.0.h),
PinCodeTextField(
controller: controller.otpController,
textStyle: TextStyle(color: BaseColors.primaryColor),
length: 4,
autoFocus: true,
keyboardType: TextInputType.number,
obscureText: false,
cursorColor: Colors.black,
animationType: AnimationType.fade,
validator: Validators().otpValidator,
autovalidateMode: controller.otpController.text.length == 4 ? AutovalidateMode.always : AutovalidateMode.disabled,
pinTheme: PinTheme(
shape: PinCodeFieldShape.box,
borderRadius: BorderRadius.circular(5),
fieldHeight: 9.h,
inactiveColor: BaseColors.borderColor,
fieldWidth: 9.h,
borderWidth: 1,
disabledColor: BaseColors.borderColor,
activeColor: BaseColors.primaryColor,
selectedFillColor: Colors.white,
inactiveFillColor: Colors.white,
selectedColor: BaseColors.borderColor,
activeFillColor: BaseColors.primaryColorLight,
errorBorderColor: Colors.red,
),
animationDuration: const Duration(milliseconds: 300),
enableActiveFill: true,
onCompleted: (v) {
debugPrint("Completed");
},
onChanged: (value) {
debugPrint(value);
},
beforeTextPaste: (text) {
return true;
},
appContext: context,
),
SizedBox(height: 5.h),
Center(
child: RichText(
text: TextSpan(
text: ' ${translate(context).didnt_recive_otp}',
style: Style.montserratBoldStyle().copyWith(color: const Color(0xff7C7C7C), fontSize: onBoardingSubTitleTs),
children: [
TextSpan(recognizer: TapGestureRecognizer()..onTap = (){
loginCtrl.loginApi(isResend: true);
},text: ' ${translate(context).sent_again}', style: Style.montserratBoldStyle().copyWith(color: BaseColors.primaryColor, fontSize: onBoardingSubTitleTs)),
],
),
),
),
SizedBox(height: 10.h),
Center(
child: BaseButton(btnType: largeButton,title: translate(context).submit_btn_txt, onPressed: (){
if (widget.isFromActivation??false) {
Get.toNamed(ruleScreenRoute);
}else{
controller.otpApi(mobile: widget.mobile);
}
},borderRadius: 19),
),
SizedBox(height: 10.h),
],
),
)
],
),
)
),
);
}
}
Editor is loading...