用户点击邀请按钮 → 立即弹出对话框 → 停留在当前页面

(cherry picked from commit b641d661d7b7c6e5e9fa4d2d8456170ee078b043)
This commit is contained in:
2025-10-31 22:04:01 -07:00
committed by speakeloudest
parent 54b0cc44ff
commit f379a8ee8f
3 changed files with 43 additions and 75 deletions
@@ -6,6 +6,10 @@ import 'package:kaer_with_panels/app/modules/kr_statistics/views/kr_statistics_v
import 'package:kaer_with_panels/app/modules/kr_user_info/views/kr_user_info_view.dart';
import 'package:kaer_with_panels/app/modules/kr_user_info/controllers/kr_user_info_controller.dart';
import 'package:kaer_with_panels/app/widgets/kr_keep_alive_wrapper.dart';
import 'package:kaer_with_panels/app/common/app_run_data.dart';
import 'package:kaer_with_panels/app/localization/app_translations.dart';
import 'package:kaer_with_panels/app/widgets/dialogs/kr_dialog.dart';
import 'package:kaer_with_panels/app/routes/app_pages.dart';
import '../../../widgets/kr_language_switch_dialog.dart';
@@ -56,9 +60,38 @@ class KRMainController extends GetxController {
/// 到哪个页面,具体传值查看MainRoutes的枚举类
kr_setPage(int index) {
// 🔒 检查邀请页面(index=1)是否需要登录
if (index == 1) {
final appRunData = KRAppRunData.getInstance();
final isDeviceLogin = appRunData.isDeviceLogin();
final isLoggedIn = appRunData.kr_isLogin.value && !isDeviceLogin;
// 如果是游客模式,弹出登录提示对话框,不切换页面
if (!isLoggedIn) {
KRDialog.show(
title: AppTranslations.kr_dialog.deviceLoginBindingTitle,
message: AppTranslations.kr_dialog.deviceLoginBindingMessage,
confirmText: AppTranslations.kr_dialog.kr_ok,
cancelText: AppTranslations.kr_dialog.kr_cancel,
onConfirm: () {
Get.back(); // 关闭对话框
// 延迟后跳转到登录页面
Future.delayed(const Duration(milliseconds: 300), () {
Get.toNamed(Routes.MR_LOGIN);
});
},
onCancel: () {
Get.back(); // 关闭对话框
},
);
return; // 不切换页面
}
}
// 正常切换页面
kr_currentIndex.value = index;
pageController.jumpToPage(index);
// 监控页面进入
if (index == MainRoutes.USER_CENTER.i) {
final userInfoController = Get.find<KRUserInfoController>();