diff --git a/lib/app/modules/kr_home/views/hi_animated_connect_button.dart b/lib/app/modules/kr_home/views/hi_animated_connect_button.dart index 1e4fd51..43dc748 100644 --- a/lib/app/modules/kr_home/views/hi_animated_connect_button.dart +++ b/lib/app/modules/kr_home/views/hi_animated_connect_button.dart @@ -11,6 +11,7 @@ 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); @@ -90,8 +91,10 @@ class HIAnimatedConnectButton extends GetView { : Theme.of(context).primaryColor, clipBehavior: Clip.antiAlias, child: InkWell( - onTap: () { + onTap: () async { HapticFeedback.lightImpact(); + final ok = await ensureAccountExists(); + if (!ok) return; final _now = DateTime.now(); if (_hiConnectBtnNextAllowedAt != null && _now.isBefore(_hiConnectBtnNextAllowedAt!)) { diff --git a/lib/app/modules/kr_home/views/hi_subscription_corner_button.dart b/lib/app/modules/kr_home/views/hi_subscription_corner_button.dart index 18c5d17..306f4b5 100644 --- a/lib/app/modules/kr_home/views/hi_subscription_corner_button.dart +++ b/lib/app/modules/kr_home/views/hi_subscription_corner_button.dart @@ -8,6 +8,7 @@ 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 { @@ -173,7 +174,11 @@ class _HISubscriptionCornerButtonState extends State @override Widget build(BuildContext context) { return GestureDetector( - onTap: () => _startCircularTransition(context), + onTap: () async { + final ok = await ensureAccountExists(); + if (!ok) return; + _startCircularTransition(context); + }, child: Container( key: _buttonKey, // 绑定 GlobalKey width: widget.size, @@ -185,4 +190,4 @@ class _HISubscriptionCornerButtonState extends State ), ); } -} \ No newline at end of file +} diff --git a/lib/app/modules/kr_home/views/kr_home_view.dart b/lib/app/modules/kr_home/views/kr_home_view.dart index 0049b48..5534ee8 100755 --- a/lib/app/modules/kr_home/views/kr_home_view.dart +++ b/lib/app/modules/kr_home/views/kr_home_view.dart @@ -21,6 +21,7 @@ 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}); @@ -29,10 +30,17 @@ class KRHomeView extends StatefulWidget implements HasSwipeConfig { enableLeft: true, enableRight: true, onLeft: () { - Get.toNamed(Routes.HI_MENU); + ensureAccountExists().then((ok) { + if (!ok) return; + Get.toNamed(Routes.HI_MENU); + }); + }, + onRight: () { + ensureAccountExists().then((ok) { + if (!ok) return; + GlobalOverlayService.instance.triggerSubscriptionAnimation(); + }); }, - onRight: () => - GlobalOverlayService.instance.triggerSubscriptionAnimation(), ); @override diff --git a/lib/app/widgets/hi_base_scaffold.dart b/lib/app/widgets/hi_base_scaffold.dart index 92edea6..0da257e 100644 --- a/lib/app/widgets/hi_base_scaffold.dart +++ b/lib/app/widgets/hi_base_scaffold.dart @@ -4,6 +4,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:kaer_with_panels/app/widgets/kr_local_image.dart'; import 'package:kaer_with_panels/app/routes/app_pages.dart'; +import 'package:kaer_with_panels/app/utils/account_guard.dart'; /// 🔹 HIBaseScaffold /// 用于统一页面结构: @@ -112,7 +113,9 @@ class HIBaseScaffold extends StatelessWidget { // 优先显示菜单按钮 if (showMenuButton) { return GestureDetector( - onTap: () { + onTap: () async { + final ok = await ensureAccountExists(); + if (!ok) return; Get.toNamed(Routes.HI_MENU); }, child: Container( diff --git a/pubspec.yaml b/pubspec.yaml index 7679293..3905b7f 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 0.0.4+101 +version: 0.0.4+103 environment: sdk: '>=3.5.0 <4.0.0'