新增日志全局开关便于调试,优化部分机型可能出现的界面错乱或不显示等问题

(cherry picked from commit 5853ba7fe4e0cbe4f04b20c86e9fd84c5557139f)
This commit is contained in:
2025-11-02 00:31:31 -07:00
committed by speakeloudest
parent cf297caf09
commit 17b3f6b92d
9 changed files with 139 additions and 34 deletions
@@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:get/get.dart';
import 'package:kaer_with_panels/app/common/app_run_data.dart';
@@ -30,8 +31,11 @@ import 'package:kaer_with_panels/app/utils/kr_common_util.dart';
import 'package:kaer_with_panels/app/utils/kr_secure_storage.dart';
import 'package:kaer_with_panels/app/services/singbox_imp/kr_sing_box_imp.dart';
import 'package:flutter/foundation.dart';
import 'package:kaer_with_panels/app/utils/kr_init_log_collector.dart'; // 🔧 新增:导入日志收集器
class KRHomeController extends GetxController with WidgetsBindingObserver {
// 🔧 新增:日志收集器实例
final _initLog = KRInitLogCollector();
/// 订阅服务
final KRSubscribeService kr_subscribeService = KRSubscribeService();
@@ -278,16 +282,20 @@ class KRHomeController extends GetxController with WidgetsBindingObserver {
void _kr_initLoginStatus() {
_initLog.log('开始初始化登录状态处理', tag: 'Home');
KRLogUtil.kr_i('初始化登录状态', tag: 'HomeController');
// 🔧 Android 15 紧急修复:8秒超时,更快响应移动网络慢的情况
Timer(const Duration(seconds: 8), () {
if (kr_currentListStatus.value == KRHomeViewsListStatus.kr_loading) {
_initLog.logWarning('⏱️ 订阅加载超时(8秒保护),强制设置为无数据状态', tag: 'Subscribe');
_initLog.log('当前列表状态仍为: loading,触发超时保护', tag: 'Subscribe');
KRLogUtil.kr_w('⏱️ 订阅服务初始化超时(8秒),强制设置为无数据状态', tag: 'HomeController');
// 🔧 Android 15 优化:超时设置为 none 而非 error,避免底部面板显示错误界面
kr_currentListStatus.value = KRHomeViewsListStatus.kr_none;
// 强制更新底部面板高度,确保显示正常
kr_updateBottomPanelHeight();
_initLog.log('已强制切换到默认视图, 底部面板高度: ${kr_bottomPanelHeight.value}', tag: 'Subscribe');
KRLogUtil.kr_i('✅ 已强制切换到默认视图', tag: 'HomeController');
}
});
@@ -295,6 +303,7 @@ class KRHomeController extends GetxController with WidgetsBindingObserver {
// 🔧 Android 15 新增:3秒警告,帮助诊断
Timer(const Duration(seconds: 3), () {
if (kr_currentListStatus.value == KRHomeViewsListStatus.kr_loading) {
_initLog.logWarning('⚠️ 订阅服务已加载3秒,网络可能较慢', tag: 'Subscribe');
KRLogUtil.kr_w('⚠️ 订阅服务初始化已耗时3秒,可能网络较慢', tag: 'HomeController');
}
});
@@ -66,12 +66,22 @@ class KRHomeBottomPanel extends GetView<KRHomeController> {
final isNotLoggedIn = controller.kr_currentViewStatus.value ==
KRHomeViewsStatus.kr_notLoggedIn;
KRLogUtil.kr_i('构建默认视图', tag: 'HomeBottomPanel');
KRLogUtil.kr_i('=' * 60, tag: 'HomeBottomPanel');
KRLogUtil.kr_i('🎨 构建默认视图', tag: 'HomeBottomPanel');
KRLogUtil.kr_i('是否未登录: $isNotLoggedIn', tag: 'HomeBottomPanel');
KRLogUtil.kr_i('是否有有效订阅: $hasValidSubscription', tag: 'HomeBottomPanel');
KRLogUtil.kr_i('订阅列表数量: ${controller.kr_subscribeService.kr_availableSubscribes.length}', tag: 'HomeBottomPanel');
KRLogUtil.kr_i('当前选中订阅: ${controller.kr_subscribeService.kr_currentSubscribe.value?.name ?? "null"}', tag: 'HomeBottomPanel');
KRLogUtil.kr_i('是否试用: $isTrial', tag: 'HomeBottomPanel');
KRLogUtil.kr_i('当前高度: ${controller.kr_bottomPanelHeight.value}',
tag: 'HomeBottomPanel');
KRLogUtil.kr_i('当前高度: ${controller.kr_bottomPanelHeight.value}', tag: 'HomeBottomPanel');
// 🔧 新增:详细的 UI 渲染决策日志
if (hasValidSubscription) {
KRLogUtil.kr_i('✅ 将渲染: 连接信息卡片 (KRHomeConnectionInfoView)', tag: 'HomeBottomPanel');
} else {
KRLogUtil.kr_i('✅ 将渲染: 订阅卡片 (KRSubscriptionCard) - 开通会员界面', tag: 'HomeBottomPanel');
}
KRLogUtil.kr_i('=' * 60, tag: 'HomeBottomPanel');
// 🔧 关键修复:统一布局逻辑,确保无论登录状态如何都显示完整UI
return Column(
@@ -86,16 +96,22 @@ class KRHomeBottomPanel extends GetView<KRHomeController> {
// 🔧 核心修复:无论登录状态,都显示核心卡片(订阅或连接信息)
if (hasValidSubscription)
// 已订阅:显示连接信息卡片
Container(
margin: EdgeInsets.only(top: 12.h),
child: const KRHomeConnectionInfoView(),
)
Builder(builder: (context) {
KRLogUtil.kr_i('🔹 渲染连接信息卡片,margin top: ${12.h}', tag: 'HomeBottomPanel');
return Container(
margin: EdgeInsets.only(top: 12.h),
child: const KRHomeConnectionInfoView(),
);
})
else
// 未订阅(包括未登录):始终显示订阅卡片
Container(
margin: EdgeInsets.only(top: 12.h, left: 12.w, right: 12.w),
child: const KRSubscriptionCard(),
),
Builder(builder: (context) {
KRLogUtil.kr_i('🔹 渲染订阅卡片,margin: top=${12.h}, left=${12.w}, right=${12.w}', tag: 'HomeBottomPanel');
return Container(
margin: EdgeInsets.only(top: 12.h, left: 12.w, right: 12.w),
child: const KRSubscriptionCard(),
);
}),
// 2. 如果已订阅且是试用,展示试用卡片
if (hasValidSubscription && isTrial)
@@ -24,10 +24,25 @@ class KRSubscriptionCard extends StatelessWidget {
// 构建订阅卡片
Widget _kr_buildSubscriptionCard(BuildContext context) {
// 🔧 新增:订阅卡片渲染日志
print('🎴 [SubscriptionCard] 开始构建订阅卡片');
print('🎴 [SubscriptionCard] 卡片颜色: ${Theme.of(context).cardColor}');
print('🎴 [SubscriptionCard] 主题亮度: ${Theme.of(context).brightness}');
print('🎴 [SubscriptionCard] 文本颜色: ${Theme.of(context).textTheme.bodyMedium?.color}');
print('🎴 [SubscriptionCard] ScreenUtil - 12.w=${12.w}, 16.h=${16.h}, 44.w=${44.w}');
// 🔧 关键修复:添加最小高度约束和调试边框
return Container(
// 添加最小高度,确保卡片可见
constraints: const BoxConstraints(minHeight: 180),
decoration: BoxDecoration(
color: Theme.of(context).cardColor,
borderRadius: BorderRadius.circular(12.w),
// 🔧 添加边框用于调试可见性
border: Border.all(
color: Colors.blue.withOpacity(0.3),
width: 2,
),
),
child: Column(
mainAxisSize: MainAxisSize.min,
@@ -55,7 +70,10 @@ class KRSubscriptionCard extends StatelessWidget {
style: KrAppTextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: Theme.of(context).textTheme.bodyMedium?.color,
// 🔧 关键修复:确保文本颜色可见
color: Theme.of(context).brightness == Brightness.dark
? Colors.white
: Colors.black87,
),
),
),