This commit is contained in:
2026-07-08 13:09:20 +03:00
parent b9da1d3064
commit 9eda119527
42 changed files with 830 additions and 279 deletions

View File

@@ -79,17 +79,18 @@ class _PhoneLoginScreenState extends State<PhoneLoginScreen> {
if (state.isSuccess) {
context.go("/pin");
} else if (state.error != null) {
setState(() {
_isFirstTry = false;
});
setState(() { _isFirstTry = false; });
codeController.clear();
FocusScope.of(context).requestFocus(codeFocusNode);
ScaffoldMessenger.of(
context,
).showSnackBar(SnackBar(content: Text(state.error!)));
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(state.error!)));
} else if (state.isBlocked) {
context.go("/block");
}
if (state.secondsLeft == 0 && codeFocusNode.hasFocus) {
codeFocusNode.unfocus();
codeController.clear();
}
},
builder: (context, state) {
return Scaffold(
@@ -126,12 +127,21 @@ class _PhoneLoginScreenState extends State<PhoneLoginScreen> {
),
const SizedBox(height: 35),
GestureDetector(
onTap: openKeyboard,
onTap: state.secondsLeft > 0 ? openKeyboard : null,
child: CodeDots(code: state.code, length: 6),
),
const SizedBox(height: 8),
if (!_isFirstTry)
if (state.secondsLeft == 0)
const Text(
"Время действия кода истекло. Запросите новый.",
style: TextStyle(
color: AppColors.pinError,
fontSize: 14,
fontWeight: FontWeight.bold,
),
)
else if (!_isFirstTry)
Text(
"Осталось ${state.attemptsLeft} попытк${state.attemptsLeft == 1 ? 'а' : 'и'}",
style: const TextStyle(
@@ -145,14 +155,14 @@ class _PhoneLoginScreenState extends State<PhoneLoginScreen> {
text: state.secondsLeft == 0
? "Отправить код повторно"
: "Отправить код повторно\nчерез 00:${state.secondsLeft.toString().padLeft(2, '0')} сек.",
onTap: state.secondsLeft == 0
onTap: (state.secondsLeft == 0 && !state.isSubmitting)
? () {
context.read<VerifyCodeBloc>().add(
ResendCodePressed(),
);
}
: () {},
enabled: state.secondsLeft == 0,
context.read<VerifyCodeBloc>().add(
ResendCodePressed(),
);
}
: null,
enabled: state.secondsLeft == 0 && !state.isSubmitting,
width: 250,
),
const Spacer(),
@@ -167,6 +177,7 @@ class _PhoneLoginScreenState extends State<PhoneLoginScreen> {
keyboardType: TextInputType.number,
maxLength: 6,
autofocus: true,
enabled: state.secondsLeft > 0,
),
),
),