diff --git a/frontend/mining-app/lib/presentation/pages/auth/login_page.dart b/frontend/mining-app/lib/presentation/pages/auth/login_page.dart index 904da732..22131464 100644 --- a/frontend/mining-app/lib/presentation/pages/auth/login_page.dart +++ b/frontend/mining-app/lib/presentation/pages/auth/login_page.dart @@ -1,3 +1,4 @@ +import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; @@ -57,27 +58,32 @@ class _LoginPageState extends ConsumerState { ScaffoldMessenger.of(context).clearSnackBars(); if (message.contains('锁定')) { - // 账户已锁定 → 弹窗 + 找回密码 + // 账户已锁定 → 弹窗 + 找回密码(5秒后自动关闭) showDialog( context: context, - builder: (ctx) => AlertDialog( - title: const Text('账户已锁定'), - content: Text(message), - actions: [ - TextButton( - onPressed: () => Navigator.pop(ctx), - child: Text('知道了', style: TextStyle(color: AppColors.textSecondaryOf(context))), - ), - ElevatedButton( - onPressed: () { - Navigator.pop(ctx); - context.push(Routes.forgotPassword, extra: _phoneController.text.trim()); - }, - style: ElevatedButton.styleFrom(backgroundColor: _orange), - child: const Text('找回密码', style: TextStyle(color: Colors.white)), - ), - ], - ), + builder: (ctx) { + Timer(const Duration(seconds: 5), () { + if (ctx.mounted) Navigator.of(ctx, rootNavigator: true).maybePop(); + }); + return AlertDialog( + title: const Text('账户已锁定'), + content: Text(message), + actions: [ + TextButton( + onPressed: () => Navigator.pop(ctx), + child: Text('知道了', style: TextStyle(color: AppColors.textSecondaryOf(context))), + ), + ElevatedButton( + onPressed: () { + Navigator.pop(ctx); + context.push(Routes.forgotPassword, extra: _phoneController.text.trim()); + }, + style: ElevatedButton.styleFrom(backgroundColor: _orange), + child: const Text('找回密码', style: TextStyle(color: Colors.white)), + ), + ], + ); + }, ); } else if (message.contains('还剩')) { // 密码错误但还有机会 → SnackBar 提醒 + 找回密码入口