117 lines
3.5 KiB
Dart
Executable File
117 lines
3.5 KiB
Dart
Executable File
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<Widget> 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<KRUserInfoController>();
|
||
userInfoController.kr_onPageEnter();
|
||
}
|
||
}
|
||
}
|