From 578f1729fa50ae84b9170de38dd17aedc6b417ba Mon Sep 17 00:00:00 2001 From: wuqifeng <540416539@qq.com> Date: Fri, 26 Apr 2024 01:30:28 +0800 Subject: [PATCH] fix:修复老bug:修改密码后跳(密码)登录页而非首页 --- android/app/build.gradle | 2 +- lib/common/core/user_util.dart | 4 ++-- lib/pages/login/loginpage/bloc/login_bloc.dart | 3 ++- lib/pages/login/loginpage/login_page.dart | 10 +++++++--- lib/pages/login/setpwd/set_pwd_page.dart | 5 +++-- lib/pages/user/modify/modify_user_information_page.dart | 1 - lib/route/route.dart | 5 ++++- 7 files changed, 19 insertions(+), 11 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index e2d75a9..8dd901f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -93,5 +93,5 @@ dependencies { implementation 'com.geyifeng.immersionbar:immersionbar:3.2.2' // kotlin扩展(可选) implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2' - implementation 'io.keyss.android.library:bjgame:1.0.2' + implementation 'io.keyss.android.library:bjgame:1.0.3' } diff --git a/lib/common/core/user_util.dart b/lib/common/core/user_util.dart index eb206d7..96ffc15 100644 --- a/lib/common/core/user_util.dart +++ b/lib/common/core/user_util.dart @@ -54,7 +54,7 @@ class UserUtil { SpUtil.getInstance().remove(SpConst.prefsKeyUserInfo); } - static void logout() { + static void logout([bool showPasswordLoginPage = false]) { _clearUserData(); // 判断下不在Splash页就跳转 /*var currentPageName = ModalRoute.of(AppRouter.context)?.settings.name; @@ -62,6 +62,6 @@ class UserUtil { if (currentPageName != AppRouteName.splash) { Navigator.of(AppRouter.context).pushNamedAndRemoveUntil(AppRouteName.login, (route) => false); }*/ - Navigator.of(AppRouter.context).pushNamedAndRemoveUntil(AppRouteName.login, (route) => false); + Navigator.of(AppRouter.context).pushNamedAndRemoveUntil(AppRouteName.login, (route) => false, arguments: {'showPasswordPage': showPasswordLoginPage}); } } diff --git a/lib/pages/login/loginpage/bloc/login_bloc.dart b/lib/pages/login/loginpage/bloc/login_bloc.dart index 0ffe1fc..b7afc66 100644 --- a/lib/pages/login/loginpage/bloc/login_bloc.dart +++ b/lib/pages/login/loginpage/bloc/login_bloc.dart @@ -45,7 +45,8 @@ class LoginBloc extends Bloc { bool get canSendSms => _canSendSms; - LoginBloc() : super(LoginInitial()) { + LoginBloc(bool preferencesPasswordLogin) : super(LoginInitial()) { + _isSmsLoginType = !preferencesPasswordLogin; on(_requestLoginApi); on(_changeLoginType); on(_changePhoneNumber); diff --git a/lib/pages/login/loginpage/login_page.dart b/lib/pages/login/loginpage/login_page.dart index 6af7d9e..5ae615d 100644 --- a/lib/pages/login/loginpage/login_page.dart +++ b/lib/pages/login/loginpage/login_page.dart @@ -11,12 +11,16 @@ import 'package:wow_english/route/route.dart'; import 'bloc/login_bloc.dart'; class LoginPage extends StatelessWidget { - const LoginPage({super.key}); + + // 优先展示密码登录 + final bool preferencesPasswordLogin; + + const LoginPage({super.key, this.preferencesPasswordLogin = false}); @override Widget build(BuildContext context) { return BlocProvider( - create: (context) => LoginBloc(), + create: (context) => LoginBloc(preferencesPasswordLogin), child: _LoginPageView(), ); } @@ -30,7 +34,7 @@ class _LoginPageView extends StatelessWidget { if (state is LoginResultChangeState) { // 调试用 // Navigator.of(context).pushNamed(AppRouteName.home); - pushNamedAndRemoveUntil(AppRouteName.home, (route) => false); + pushNamedAndRemoveUntil(AppRouteName.moduleSelect, (route) => false); } }, child: _buildLoginViewWidget(), diff --git a/lib/pages/login/setpwd/set_pwd_page.dart b/lib/pages/login/setpwd/set_pwd_page.dart index 0ed15e7..2c2874f 100644 --- a/lib/pages/login/setpwd/set_pwd_page.dart +++ b/lib/pages/login/setpwd/set_pwd_page.dart @@ -7,6 +7,7 @@ import 'package:wow_english/common/widgets/textfield_customer_widget.dart'; import 'package:wow_english/route/route.dart'; import 'package:wow_english/utils/toast_util.dart'; +import '../../../common/core/user_util.dart'; import 'bloc/set_pwd_bloc.dart'; enum SetPwdPageType { @@ -59,9 +60,9 @@ class _SetPassWordPageView extends StatelessWidget { if (bloc.pageType == SetPwdPageType.initPwd) { showToast('密码设置成功'); } else { - showToast('密码修改成功'); + showToast('密码修改成功,请重新登录'); } - pushNamedAndRemoveUntil(AppRouteName.home, (route) => false); + UserUtil.logout(true); } else if (state is PasswordSetFailedState) { state.message.toast(); } diff --git a/lib/pages/user/modify/modify_user_information_page.dart b/lib/pages/user/modify/modify_user_information_page.dart index bbeae11..3c17024 100644 --- a/lib/pages/user/modify/modify_user_information_page.dart +++ b/lib/pages/user/modify/modify_user_information_page.dart @@ -66,7 +66,6 @@ class ModifyUserInformationPage extends StatelessWidget { if (bloc.isChangeInfo) { showTwoActionDialog('提示', '确定离开', '继续修改', '您的信息尚未保存',leftTap: (){ popPage(); - popPage(); },rightTap: (){ popPage(); }); diff --git a/lib/route/route.dart b/lib/route/route.dart index e6b5a20..efe888b 100644 --- a/lib/route/route.dart +++ b/lib/route/route.dart @@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:wow_english/app/splash_page.dart'; import 'package:wow_english/common/pages/wow_web_page.dart'; +import 'package:wow_english/generated/json/base/json_convert_content.dart'; import 'package:wow_english/models/product_entity.dart'; import 'package:wow_english/pages/games/view.dart'; import 'package:wow_english/pages/home/home_page.dart'; @@ -91,7 +92,9 @@ class AppRouter { transitionDuration: Duration.zero, transitionsBuilder: (_, __, ___, child) => child); case AppRouteName.login: - return CupertinoPageRoute(builder: (_) => const LoginPage()); + // 是否默认密码登录,修改密码后跳登录页,优先密码登录体验好点 + final bool showPasswordPage = (settings.arguments as Map?)?.getOrNull('showPasswordPage') as bool? ?? false; + return CupertinoPageRoute(builder: (_) => LoginPage(preferencesPasswordLogin: showPasswordPage)); case AppRouteName.moduleSelect: return CupertinoPageRoute(builder: (_) => const ModuleSelectPage()); case AppRouteName.games: -- libgit2 0.22.2