新增日志全局开关便于调试,优化部分机型可能出现的界面错乱或不显示等问题
(cherry picked from commit 5853ba7fe4e0cbe4f04b20c86e9fd84c5557139f)
This commit is contained in:
@@ -4,6 +4,7 @@ import '../utils/kr_update_util.dart';
|
||||
import '../utils/kr_secure_storage.dart';
|
||||
import '../utils/kr_log_util.dart';
|
||||
import '../services/singbox_imp/kr_sing_box_imp.dart';
|
||||
import '../utils/kr_init_log_collector.dart'; // 🔧 新增:导入日志收集器
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
@@ -1337,10 +1338,17 @@ class AppConfig {
|
||||
|
||||
KRUpdateApplication? kr_update_application;
|
||||
|
||||
// 🔧 新增:日志收集器实例
|
||||
final _initLog = KRInitLogCollector();
|
||||
|
||||
Future<void> initConfig({
|
||||
Future<void> Function()? onSuccess,
|
||||
}) async {
|
||||
_initLog.logSeparator();
|
||||
_initLog.log('🌐 开始应用配置初始化(域名加载)', tag: 'Domain');
|
||||
|
||||
if (_isInitializing) {
|
||||
_initLog.logWarning('配置初始化已在进行中,跳过重复调用', tag: 'Domain');
|
||||
KRLogUtil.kr_w('配置初始化已在进行中,跳过重复调用', tag: 'AppConfig');
|
||||
return;
|
||||
}
|
||||
@@ -1348,10 +1356,13 @@ class AppConfig {
|
||||
_isInitializing = true;
|
||||
try {
|
||||
// 🔧 修复6:启动时优先加载上次成功的域名
|
||||
_initLog.log('开始加载基础域名配置', tag: 'Domain');
|
||||
await KRDomain.kr_loadBaseDomain();
|
||||
_initLog.logSuccess('当前使用域名: ${KRDomain.kr_currentDomain}', tag: 'Domain');
|
||||
KRLogUtil.kr_i('📍 当前使用域名: ${KRDomain.kr_currentDomain}', tag: 'AppConfig');
|
||||
|
||||
// 所有模式都走正常的配置请求流程
|
||||
_initLog.log('开始配置请求流程(包含重试机制)', tag: 'Domain');
|
||||
KRLogUtil.kr_i('🚀 开始配置初始化', tag: 'AppConfig');
|
||||
await _startAutoRetry(onSuccess);
|
||||
} finally {
|
||||
@@ -1402,24 +1413,32 @@ class AppConfig {
|
||||
return;
|
||||
}
|
||||
|
||||
_initLog.log('发起配置请求 API (尝试 $totalAttempts/$maxTotalAttempts)', tag: 'Domain');
|
||||
final result = await _kr_userApi.kr_config();
|
||||
result.fold(
|
||||
(error) async {
|
||||
_initLog.logError('配置请求失败 (重试 $currentRetryCount/$kr_maxRetryCount)', tag: 'Domain', error: error);
|
||||
KRLogUtil.kr_e('配置初始化失败: $error', tag: 'AppConfig');
|
||||
currentRetryCount++;
|
||||
|
||||
|
||||
// 计算重试延迟时间
|
||||
final retryDelay = (kr_retryInterval * pow(kr_backoffFactor, currentRetryCount)).toInt();
|
||||
|
||||
// 尝试切换域名
|
||||
await KRDomain.kr_switchToNextDomain();
|
||||
|
||||
// 等待后重试,至少延迟100ms避免立即重试
|
||||
final actualDelay = max(retryDelay, 100);
|
||||
_initLog.log('将在 ${actualDelay}ms 后重试', tag: 'Domain');
|
||||
|
||||
// 尝试切换域名
|
||||
_initLog.log('尝试切换到下一个备用域名', tag: 'Domain');
|
||||
await KRDomain.kr_switchToNextDomain();
|
||||
_initLog.log('当前域名: ${KRDomain.kr_currentDomain}', tag: 'Domain');
|
||||
|
||||
// 等待后重试
|
||||
await Future.delayed(Duration(milliseconds: actualDelay));
|
||||
await executeConfigRequest();
|
||||
},
|
||||
(config) async {
|
||||
_initLog.logSuccess('配置请求成功!', tag: 'Domain');
|
||||
_initLog.log('网站ID: ${config.kr_website_id}', tag: 'Domain');
|
||||
_initLog.log('官网: ${config.kr_official_website}', tag: 'Domain');
|
||||
_retryTimer?.cancel();
|
||||
currentRetryCount = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user