From d1e8760e907efb8a1ccc7bb7d7c2d41a7d490f1e Mon Sep 17 00:00:00 2001 From: WaseemAbbasi22 Date: Tue, 31 Dec 2024 10:10:39 +0300 Subject: [PATCH] add swipe and forget password functionality ready for initial test --- assets/images/done_dummy.jpeg | Bin 0 -> 5966 bytes assets/images/nfc_dummy.png | Bin 0 -> 7683 bytes lib/new_views/app_style/app_color.dart | 2 + .../forget_passwod_verify_otp.dart | 140 +----------------- lib/new_views/pages/land_page/land_page.dart | 52 +++---- lib/new_views/pages/login_page.dart | 2 +- .../swipe_module/swipe_success_view.dart | 92 ++++++++++++ 7 files changed, 122 insertions(+), 166 deletions(-) create mode 100644 assets/images/done_dummy.jpeg create mode 100644 assets/images/nfc_dummy.png diff --git a/assets/images/done_dummy.jpeg b/assets/images/done_dummy.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..318299138a9be68fdef389a6b3c31c99d65c554d GIT binary patch literal 5966 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 ZV&Cky2k`qD5a#;*-?sdJw)XA}{s)Dd4afih literal 0 HcmV?d00001 diff --git a/assets/images/nfc_dummy.png b/assets/images/nfc_dummy.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7e289f440dacd09a0fc889968c45c4c911c9d6 GIT binary patch literal 7683 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 literal 0 HcmV?d00001 diff --git a/lib/new_views/app_style/app_color.dart b/lib/new_views/app_style/app_color.dart index 92bfaa11..9533abfd 100644 --- a/lib/new_views/app_style/app_color.dart +++ b/lib/new_views/app_style/app_color.dart @@ -10,6 +10,8 @@ class AppColor { static const Color primary50 = Color(0xff4A8DB7); static const Color primary60 = Color(0xff3B7097); static const Color primary70 = Color(0xff163A51); + //#3DA5E5 + static const Color primary80 = Color(0xff3DA5E5); //texts static const Color neutral10 = Color(0xffBCBCBC); diff --git a/lib/new_views/forget_password_module/forget_passwod_verify_otp.dart b/lib/new_views/forget_password_module/forget_passwod_verify_otp.dart index 7f25d7b0..cc841dcb 100644 --- a/lib/new_views/forget_password_module/forget_passwod_verify_otp.dart +++ b/lib/new_views/forget_password_module/forget_passwod_verify_otp.dart @@ -1,131 +1,4 @@ -// import 'package:flutter/material.dart'; -// import 'package:pinput/pinput.dart'; -// import 'package:provider/provider.dart'; -// import 'package:test_sa/controllers/providers/api/user_provider.dart'; -// import 'package:test_sa/extensions/context_extension.dart'; -// import 'package:test_sa/extensions/int_extensions.dart'; -// import 'package:test_sa/extensions/text_extensions.dart'; -// import 'package:test_sa/extensions/widget_extensions.dart'; -// import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; -// import 'package:test_sa/new_views/forget_password_module/models/general_response_model.dart'; -// import 'package:test_sa/new_views/app_style/app_color.dart'; -// import 'package:test_sa/new_views/forget_password_module/reset_password_view.dart'; -// -// class ForgetPasswordVerifyOtpView extends StatelessWidget { -// static const String routeName = "/verify_otp"; -// String otp = ''; -// ForgetPasswordVerifyOtpView({Key key}) : super(key: key); -// @override -// Widget build(BuildContext context) { -// final defaultPinTheme = PinTheme( -// width: 68.toScreenWidth, -// height: 86.toScreenHeight, -// textStyle: const TextStyle( -// fontSize: 22, -// color: Colors.black, -// ), -// decoration: BoxDecoration( -// color: AppColor.white, -// borderRadius: BorderRadius.circular(15), -// border: Border.all(color: AppColor.white10, width: 1), -// ), -// ); -// return Scaffold( -// body: Column( -// children: [ -// SingleChildScrollView( -// child: Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// mainAxisAlignment: MainAxisAlignment.center, -// children: [ -// context.translation.otpVerification.heading2(context).custom(color: AppColor.neutral80, fontWeight: FontWeight.w500), -// 8.height, -// '${context.translation.pleaseEnterTheOtpSentTo} 8997987979879'.bodyText2(context).custom(color: AppColor.white20, fontWeight: FontWeight.w500), -// 40.height, -// Center( -// child: Pinput( -// length: 4, -// defaultPinTheme: defaultPinTheme, -// focusedPinTheme: defaultPinTheme.copyWith( -// decoration: defaultPinTheme.decoration?.copyWith( -// border: Border.all(color: AppColor.white10, width: 1), -// ), -// ), -// onCompleted: (pin) async { -// otp = pin; -// }, -// ), -// ), -// -// Row( -// children: [ -// 'resend'.bodyText2(context).custom(color: AppColor.black35), -// 7.width, -// ValueListenableBuilder( -// //add actual timer value... -// valueListenable: ValueNotifier("0:00"), -// builder: (context, value, _) { -// return Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// mainAxisAlignment: MainAxisAlignment.center, -// children: [ -// value.bodyText2(context).custom( -// color: context.isDark ? AppColor.neutral10 : AppColor.neutral10, -// ), -// ], -// ); -// }, -// ), -// 7.width, -// InkWell( -// onTap: () async { -// UserProvider _userProvider = Provider.of(context, listen: false); -// String employeeId = ''; -// if (_userProvider.user != null && _userProvider.user.userName != null) { -// employeeId = _userProvider.user.userName; -// } else { -// employeeId = 'OUT3893'; -// } -// GeneralResponseModel response = await _userProvider.sendForgetPasswordOtp(context: context, employeeId: employeeId); -// // if(response.isSuccess){ -// // Navigator.push(context, MaterialPageRoute(builder: (context)=>ForgetPasswordVerifyOtpView())); -// // // Navigator.push(context, ForgetPasswordVerifyOtpView.routeName); -// // }else{ -// // Fluttertoast.showToast(msg: response?.message ?? context.translation.failedToCompleteRequest); -// // } -// print('response of send otp i got is ${response.toJson()}'); -// }, -// child: Text( -// 'resend', -// style: TextStyle( -// color: AppColor.primary30, -// fontWeight: FontWeight.w500, -// fontSize: 12.toScreenWidth, -// decorationColor: AppColor.primary30, -// decoration: TextDecoration.underline, -// ), -// ), -// ), -// ], -// ), -// ], -// ), -// ).center.expanded, -// AppFilledButton(label: context.translation.verify, maxWidth: true, onPressed: () async { -// if(otp.isNotEmpty){ -// UserProvider _userProvider = Provider.of(context, listen: false); -// GeneralResponseModel generalResponseModel = await _userProvider.forgetPasswordValidateOtp(context: context, employeeId: 'OUT3893', otp: otp); -// if (generalResponseModel.isSuccess) { -// Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => ResetPasswordView())); -// } -// } -// -// }), -// ], -// ).paddingOnly(start: 20,end: 20,bottom: 16), -// ); -// } -// } + import 'dart:async'; import 'package:flutter/material.dart'; @@ -143,9 +16,9 @@ import 'package:test_sa/new_views/forget_password_module/reset_password_view.dar class ForgetPasswordVerifyOtpView extends StatefulWidget { static const String routeName = "/verify_otp"; - String employeeId = ''; + Map data={}; - ForgetPasswordVerifyOtpView({Key key,this.employeeId}) : super(key: key); + ForgetPasswordVerifyOtpView({Key key,@required this.data}) : super(key: key); @override State createState() => _ForgetPasswordVerifyOtpViewState(); @@ -213,7 +86,7 @@ class _ForgetPasswordVerifyOtpViewState extends State(context, listen: false); - String employeeId = widget.employeeId; + String employeeId = widget.data['employeeId']; GeneralResponseModel response = await _userProvider.sendForgetPasswordOtp( context: context, employeeId: employeeId, @@ -285,7 +159,7 @@ class _ForgetPasswordVerifyOtpViewState extends State(context, listen: false); GeneralResponseModel generalResponseModel = await _userProvider.forgetPasswordValidateOtp( context: context, - employeeId:widget.employeeId, + employeeId:widget.data['employeeId'], otp: otp, ); if (generalResponseModel.isSuccess) { diff --git a/lib/new_views/pages/land_page/land_page.dart b/lib/new_views/pages/land_page/land_page.dart index 30e3a0f1..24cfb523 100644 --- a/lib/new_views/pages/land_page/land_page.dart +++ b/lib/new_views/pages/land_page/land_page.dart @@ -197,40 +197,28 @@ class _LandPageState extends State { isNfcSupported = await NfcManager.instance.isAvailable(); SwipeGeneralUtils.showSwipeTypeBottomSheetSheet(context: context, isNfcSupported: isNfcSupported); }, - child: CircularAnimationWithProgressIndicator( - child: Container( - width: 100.toScreenWidth, - height: 100.toScreenHeight, - decoration: const BoxDecoration( - shape: BoxShape.circle, - color: AppColor.white, - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - 'swipe'.toSvgAsset(width: 32, height: 32), - 8.height, - Text( - ("${context.translation.checkIn}\n${userProvider.swipeTransactionModel != null && userProvider.swipeTransactionModel.swipeTime != null ? SwipeGeneralUtils.formatTimeOnly(userProvider.swipeTransactionModel.swipeTime) : '--:--'}"), - style: AppTextStyles.bodyText2.copyWith(color: AppColor.neutral80, fontWeight: FontWeight.w500, fontFamily: "Poppins"), - ), + child: CircularAnimatedContainer(child: Container( + width: 100.toScreenWidth, + height: 100.toScreenHeight, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColor.white, + border: Border.all(color: AppColor.primary80.withOpacity(0.5), width: 2), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + 'swipe'.toSvgAsset(width: 32, height: 32), + 8.height, + Text( + ("${context.translation.checkIn}\n${userProvider.swipeTransactionModel != null && userProvider.swipeTransactionModel.swipeTime != null ? SwipeGeneralUtils.formatTimeOnly(userProvider.swipeTransactionModel.swipeTime) : '--:--'}"), + style: AppTextStyles.bodyText2.copyWith(color: AppColor.neutral80, fontWeight: FontWeight.w500, fontFamily: "Poppins"), + ), - // (context.translation.checkIn + - // "\n" + - // (userProvider.swipeTransactionModel != null && userProvider.swipeTransactionModel.swipeTime != null - // ? SwipeGeneralUtils.formatTimeOnly(userProvider.swipeTransactionModel.swipeTime) - // : '--:--')) - // .bodyText2(context) - // .custom(color: AppColor.neutral80), - // 8.height, - // userProvider.swipeTransactionModel != null && userProvider.swipeTransactionModel.swipeTime != null - // ? SwipeGeneralUtils.formatTimeOnly(userProvider.swipeTransactionModel.swipeTime).bodyText2(context).custom(color: AppColor.neutral80) - // : '--:--'.bodyText(context).custom(color: AppColor.neutral80), - ], - ), + ], ), - ), + ),), ), ), ], diff --git a/lib/new_views/pages/login_page.dart b/lib/new_views/pages/login_page.dart index 06ce38b3..7eea1566 100644 --- a/lib/new_views/pages/login_page.dart +++ b/lib/new_views/pages/login_page.dart @@ -135,7 +135,7 @@ class _LoginPageState extends State { if(userNameController.text.isNotEmpty){ GeneralResponseModel response = await _userProvider.sendForgetPasswordOtp(context: context, employeeId: userNameController.text); if(response.isSuccess){ - Navigator.push(context, MaterialPageRoute(builder: (context)=>ForgetPasswordVerifyOtpView(employeeId:userNameController.text,))); + Navigator.push(context, MaterialPageRoute(builder: (context)=>ForgetPasswordVerifyOtpView(data: {'employeeId':userNameController.text,'phoneNumber':response.data},))); // Navigator.push(context, ForgetPasswordVerifyOtpView.routeName); }else{ Fluttertoast.showToast(msg: response?.message ?? context.translation.failedToCompleteRequest); diff --git a/lib/new_views/swipe_module/swipe_success_view.dart b/lib/new_views/swipe_module/swipe_success_view.dart index 8de8d847..a5bd91f1 100644 --- a/lib/new_views/swipe_module/swipe_success_view.dart +++ b/lib/new_views/swipe_module/swipe_success_view.dart @@ -95,6 +95,98 @@ class _CircularAnimationWithProgressIndicatorState } } +class CircularAnimatedContainer extends StatefulWidget { + Widget child; + + CircularAnimatedContainer({Key key, @required this.child}) : super(key: key); + @override + _CircularAnimatedContainerState createState() => _CircularAnimatedContainerState(); +} + +class _CircularAnimatedContainerState extends State + with SingleTickerProviderStateMixin { + AnimationController _controller; + Animation _animation; + + + @override + void initState() { + super.initState(); + _controller = AnimationController( + duration: const Duration(seconds: 2), + vsync: this, + )..repeat(); + + _animation = CurvedAnimation( + parent: _controller, + curve: Curves.easeInOut, // Applies the ease-in-out effect + ); + // Repeats animation + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Center( + child: Stack( + alignment: Alignment.center, + children: [ + widget.child, + AnimatedBuilder( + animation: _animation, + builder: (context, child) { + return CustomPaint( + painter: CircularProgressPainter( + progress: _animation.value), + size: Size(100.toScreenHeight, 100.toScreenWidth), + ); + }, + ), + ], + ), + ); + } +} + +class CircularProgressPainter extends CustomPainter { + final double progress; + + CircularProgressPainter({@required this.progress}); + + @override + void paint(Canvas canvas, Size size) { + final Paint paint = Paint() + ..color = AppColor.primary80 + ..style = PaintingStyle.stroke + ..strokeWidth = 3 + ..strokeCap = StrokeCap.round; + + final center = Offset(size.width / 2, size.height / 2); + final radius = size.width / 2.05; + // final double startAngle = 2 * 3.141592653589793 * progress; + final double sweepAngle = 2 * 3.141592653589793 * progress; + const double startAngle = -90 * (3.141592653589793 / 180); + // final double sweepAngle = 2.05 * 3.141592653589793 * progress; + + canvas.drawArc( + Rect.fromCircle(center: center, radius: radius), + startAngle, + sweepAngle, + false, + paint, + ); + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) { + return true; + } +} // ClipOval( // child: Container(