import 'package:flutter/widgets.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:get/get.dart'; import 'package:kaer_with_panels/app/modules/kr_home/views/kr_home_view.dart'; import 'package:kaer_with_panels/app/modules/kr_invite/views/kr_invite_view.dart'; import 'package:kaer_with_panels/app/modules/kr_statistics/views/kr_statistics_view.dart'; 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'; enum MainRoutes { INDEX(0, '首页'), DYNAMICS(1, '看看'), TOTALLETTER(2, '邮筒'), MESSAGELIST(3, '消息'), USER_CENTER(4, '我的'); final int i; final String title; const MainRoutes(this.i, this.title); } class KRMainController extends GetxController { static KRMainController get to => Get.find(); DateTime? lastPopTime; var kr_currentIndex = 0.obs; late final List widgets; /// 分页控制器 PageController pageController = PageController(keepPage: true); @override void onInit() { super.onInit(); // 🔧 诊断:在 onInit 中创建 widgets 列表 if (kDebugMode) { print('🎬 KRMainController.onInit 被调用'); print('📝 开始创建 widgets 列表...'); } widgets = [ KRKeepAliveWrapper(KRHomeView()), KRKeepAliveWrapper(KRInviteView()), KRKeepAliveWrapper(KRStatisticsView()), KRKeepAliveWrapper(KRUserInfoView()), ]; if (kDebugMode) { print('✅ widgets 列表创建完成,包含 ${widgets.length} 个页面'); } } @override void onReady() { super.onReady(); } @override void onClose() { super.onClose(); } /// 到哪个页面,具体传值查看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(); userInfoController.kr_onPageEnter(); } } }