change password screen ui

This commit is contained in:
jayesh
2024-06-10 12:18:54 +05:30
parent aad0f3b87b
commit 1a77f65377
15 changed files with 201 additions and 174 deletions

View File

@@ -1,7 +1,6 @@
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:tanami_app/core/styles/app_text.dart';
import '../../../../core/utils/secure/secure_storage_service.dart';
part 'pin_event.dart';
@@ -12,13 +11,20 @@ class PinBloc extends Bloc<PinEvent, PinState> {
PinBloc({required this.secureStorageService})
: super(const PinState(
pin: '', pinComplete: false, isVerified: false, error: '')) {
pin: '',
pinComplete: false,
isVerified: false,
error: '',
verifiedOnce: false)) {
on<NumberPressed>((event, emit) {
final newPin = state.pin + event.number;
if (newPin.length <= 6) {
emit(state.copyWith(
pin: newPin, pinComplete: newPin.length == 6, error: ''));
pin: newPin,
pinComplete: newPin.length == 6,
error: '',
verifiedOnce: false));
if (newPin.length == 6) {
add(VerifyPinPressed(newPin));
@@ -30,7 +36,10 @@ class PinBloc extends Bloc<PinEvent, PinState> {
if (state.pin.isNotEmpty) {
final newPin = state.pin.substring(0, state.pin.length - 1);
emit(state.copyWith(
pin: newPin, pinComplete: newPin.length == 6, error: ''));
pin: newPin,
pinComplete: newPin.length == 6,
error: '',
verifiedOnce: false));
}
});
@@ -42,11 +51,12 @@ class PinBloc extends Bloc<PinEvent, PinState> {
final storedPin = await secureStorageService.read('pin_code');
if (storedPin == event.pin) {
emit(state.copyWith(isVerified: true, error: ''));
emit(state.copyWith(isVerified: true, error: '', verifiedOnce: true));
} else {
emit(state.copyWith(
isVerified: false,
error: AppText.incorrectPinCode,
verifiedOnce: true,
));
}
});

View File

@@ -5,12 +5,14 @@ class PinState extends Equatable {
final bool pinComplete;
final bool isVerified;
final String error;
final bool verifiedOnce; // New variable to prevent double listener calls
const PinState({
required this.pin,
required this.pinComplete,
required this.isVerified,
required this.error,
required this.verifiedOnce,
});
PinState copyWith({
@@ -18,15 +20,17 @@ class PinState extends Equatable {
bool? pinComplete,
bool? isVerified,
String? error,
bool? verifiedOnce,
}) {
return PinState(
pin: pin ?? this.pin,
pinComplete: pinComplete ?? this.pinComplete,
isVerified: isVerified ?? this.isVerified,
error: error ?? this.error,
verifiedOnce: verifiedOnce ?? this.verifiedOnce,
);
}
@override
List<Object> get props => [pin, pinComplete, isVerified, error];
List<Object> get props => [pin, pinComplete, isVerified, error, verifiedOnce];
}

View File

@@ -1,3 +1,5 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:gap/gap.dart';
@@ -26,10 +28,13 @@ class PinKey extends StatelessWidget {
const Gap(20),
BlocConsumer<PinBloc, PinState>(
listener: (context, state) {
if (state.pinComplete) {
if (state.pinComplete &&
state.error.isEmpty &&
!state.verifiedOnce) {
if (fromScreen == "login") {
goRouter.pushNamed(RouteName.mainScreen);
} else if (fromScreen == "reset-pin") {
log("Running this");
successToastMessage(context, AppText.pinUpdatedSucess);
goRouter.pop();
} else {