feat: 1.调整项目初始化,不用等待site/config接口,仅在hi_user_info中调用;将site_config_service拆成loadDomain和获取配置,在splash中只做loadDomain

2. 优化接口拦截的解密日志
3. 调整获取订阅到kr_home,与源版一致
4. 修复闪连抖动问题,增加套餐有效期判断
This commit is contained in:
2026-01-13 18:07:11 -08:00
parent 1d2a89a80a
commit ccf9a76de9
22 changed files with 737 additions and 1379 deletions
@@ -11,7 +11,6 @@ import 'package:kaer_with_panels/app/widgets/kr_app_text_style.dart';
import 'package:kaer_with_panels/app/services/global_overlay_service.dart';
import 'package:kaer_with_panels/app/services/singbox_imp/kr_sing_box_imp.dart';
import 'package:kaer_with_panels/singbox/model/singbox_status.dart';
import 'package:kaer_with_panels/app/utils/account_guard.dart';
DateTime? _hiConnectBtnNextAllowedAt;
const Duration _hiConnectBtnDebounce = Duration(milliseconds: 800);
@@ -93,8 +92,6 @@ class HIAnimatedConnectButton extends GetView<KRHomeController> {
child: InkWell(
onTap: () async {
HapticFeedback.lightImpact();
final ok = await ensureAccountExists();
if (!ok) return;
final _now = DateTime.now();
if (_hiConnectBtnNextAllowedAt != null &&
_now.isBefore(_hiConnectBtnNextAllowedAt!)) {
@@ -8,7 +8,6 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../controllers/kr_home_controller.dart';
import '../../../routes/app_pages.dart';
import 'package:kaer_with_panels/app/services/global_overlay_service.dart';
import 'package:kaer_with_panels/app/utils/account_guard.dart';
// ======================= 1. Circular Clipper (保持不变) =======================
class CircularClipper extends CustomClipper<Path> {
@@ -175,8 +174,6 @@ class _HISubscriptionCornerButtonState extends State<HISubscriptionCornerButton>
Widget build(BuildContext context) {
return GestureDetector(
onTap: () async {
final ok = await ensureAccountExists();
if (!ok) return;
_startCircularTransition(context);
},
child: Container(
+26 -39
View File
@@ -17,7 +17,6 @@ import 'package:kaer_with_panels/app/services/global_overlay_service.dart';
import 'package:kaer_with_panels/app/widgets/swipe/has_swipe_config.dart';
import 'package:kaer_with_panels/app/widgets/swipe/swipe_config.dart';
import 'package:kaer_with_panels/app/routes/app_pages.dart';
import 'package:kaer_with_panels/app/utils/account_guard.dart';
class KRHomeView extends StatefulWidget implements HasSwipeConfig {
const KRHomeView({super.key});
@@ -26,16 +25,10 @@ class KRHomeView extends StatefulWidget implements HasSwipeConfig {
enableLeft: true,
enableRight: true,
onLeft: () {
ensureAccountExists().then((ok) {
if (!ok) return;
Get.toNamed(Routes.HI_MENU);
});
Get.toNamed(Routes.HI_MENU);
},
onRight: () {
ensureAccountExists().then((ok) {
if (!ok) return;
GlobalOverlayService.instance.triggerSubscriptionAnimation();
});
GlobalOverlayService.instance.triggerSubscriptionAnimation();
},
);
@@ -109,43 +102,37 @@ class _KRHomeViewState extends State<KRHomeView> {
);
// 3. 开始条件判断
if (currentSubscribe == null) {
// --- 情况1: 没有任何订阅信息 ---
content = Text(
'尚未购买套餐',
style: highlightStyle,
);
final listStatus =
controller.kr_currentListStatus.value;
if (listStatus == KRHomeViewsListStatus.kr_loading) {
content = Text('加载订阅中', style: normalStyle);
} else {
// --- 情况2: 有订阅信息,需要判断是否过期 ---
final now = DateTime.now();
DateTime? expireDateTime;
try {
expireDateTime =
DateTime.parse(currentSubscribe.expireTime);
} catch (e) {
// 日期格式解析失败
}
if (expireDateTime != null &&
expireDateTime.isBefore(now)) {
// --- 情况2.1: 订阅已过期 ---
final formattedExpireDate =
'${expireDateTime.year}/${expireDateTime.month.toString().padLeft(2, '0')}/${expireDateTime.day.toString().padLeft(2, '0')}';
// 使用换行符 \n 合并为单个 Text 组件
content = Text(
'您的套餐已于 $formattedExpireDate 到期\n请前往购买新套餐',
style: highlightStyle,
);
if (currentSubscribe == null) {
content = Text('尚未购买套餐', style: highlightStyle);
} else {
// --- 情况2.2: 订阅有效 ---
final formattedExpireTime = expireDateTime != null
final now = DateTime.now();
DateTime? expireDateTime;
try {
expireDateTime =
DateTime.parse(currentSubscribe.expireTime);
} catch (e) {}
if (expireDateTime != null &&
expireDateTime.isBefore(now)) {
final formattedExpireDate =
'${expireDateTime.year}/${expireDateTime.month.toString().padLeft(2, '0')}/${expireDateTime.day.toString().padLeft(2, '0')}';
content = Text(
'您的套餐已于 $formattedExpireDate 到期\n请前往购买新套餐',
style: highlightStyle);
} else {
final formattedExpireTime = expireDateTime !=
null
? '${expireDateTime.year}/${expireDateTime.month.toString().padLeft(2, '0')}/${expireDateTime.day.toString().padLeft(2, '0')} ${expireDateTime.hour.toString().padLeft(2, '0')}:${expireDateTime.minute.toString().padLeft(2, '0')}'
: '未知';
// 使用换行符 \n 合并为单个 Text 组件
content = Text(
'套餐到期时间:$formattedExpireTime\n${controller.kr_isConnected.value ? '当前线路:${controller.kr_getRealConnectedNodeCountry()}' : '未连接'}',
style: normalStyle,
);
}
}
}
@@ -233,7 +220,7 @@ class _KRHomeViewState extends State<KRHomeView> {
10.w,
);
}
HIDialog.show(
title: '闪连功能',
message: