From 135d60aaa64979b93d7bac7700a96000220a3b8c Mon Sep 17 00:00:00 2001 From: Rust Date: Fri, 17 Oct 2025 21:42:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=A2=E9=98=85=E9=80=BB?= =?UTF-8?q?=E8=BE=91-=E6=9C=AA=E7=BB=91=E5=AE=9A=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E7=9A=84=E5=BF=85=E9=A1=BB=E7=99=BB=E5=BD=95=E6=89=8D=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E8=B4=AD=E4=B9=B0=E5=A5=97=E9=A4=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr_home_connection_options_view.dart | 5 ++- .../kr_home/views/kr_home_last_day_card.dart | 3 +- .../kr_home/views/kr_home_trial_card.dart | 3 +- .../kr_home/widgets/kr_subscription_card.dart | 3 +- .../kr_user_info/views/kr_user_info_view.dart | 5 ++- .../utils/kr_subscribe_navigation_util.dart | 45 +++++++++++++++++++ 6 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 lib/app/utils/kr_subscribe_navigation_util.dart diff --git a/lib/app/modules/kr_home/views/kr_home_connection_options_view.dart b/lib/app/modules/kr_home/views/kr_home_connection_options_view.dart index c36d82a..a3fe16d 100755 --- a/lib/app/modules/kr_home/views/kr_home_connection_options_view.dart +++ b/lib/app/modules/kr_home/views/kr_home_connection_options_view.dart @@ -5,6 +5,7 @@ import 'package:kaer_with_panels/app/localization/app_translations.dart'; import 'package:kaer_with_panels/app/widgets/kr_app_text_style.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/kr_subscribe_navigation_util.dart'; import '../controllers/kr_home_controller.dart'; import '../models/kr_home_views_status.dart'; @@ -43,8 +44,8 @@ class KRHomeConnectionOptionsView extends GetView { return GestureDetector( onTap: () { if (controller.kr_subscribeService.kr_currentSubscribe.value == null) { - // 未订阅状态下跳转到购买会员页面 - Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP); + // 未订阅状态下,使用统一的订阅导航工具 + KRSubscribeNavigationUtil.navigateToPurchase(tag: 'ConnectionOptions'); } else { // 已订阅状态下执行原有的点击事件 onTap?.call(); diff --git a/lib/app/modules/kr_home/views/kr_home_last_day_card.dart b/lib/app/modules/kr_home/views/kr_home_last_day_card.dart index 30ae8a5..8244438 100755 --- a/lib/app/modules/kr_home/views/kr_home_last_day_card.dart +++ b/lib/app/modules/kr_home/views/kr_home_last_day_card.dart @@ -4,6 +4,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:kaer_with_panels/app/localization/app_translations.dart'; import 'package:kaer_with_panels/app/widgets/kr_app_text_style.dart'; import '../../../routes/app_pages.dart'; +import '../../../utils/kr_subscribe_navigation_util.dart'; import '../controllers/kr_home_controller.dart'; @@ -40,7 +41,7 @@ class KRHomeLastDayCard extends GetView { ), ), GestureDetector( - onTap: () => Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP), + onTap: () => KRSubscribeNavigationUtil.navigateToPurchase(tag: 'LastDayCard'), child: Row( children: [ Text( diff --git a/lib/app/modules/kr_home/views/kr_home_trial_card.dart b/lib/app/modules/kr_home/views/kr_home_trial_card.dart index 883e35a..e01355c 100755 --- a/lib/app/modules/kr_home/views/kr_home_trial_card.dart +++ b/lib/app/modules/kr_home/views/kr_home_trial_card.dart @@ -6,6 +6,7 @@ import 'package:kaer_with_panels/app/widgets/kr_app_text_style.dart'; import '../../../routes/app_pages.dart'; import '../../../services/kr_subscribe_service.dart'; import '../../../utils/kr_log_util.dart'; +import '../../../utils/kr_subscribe_navigation_util.dart'; import '../controllers/kr_home_controller.dart'; /// 试用卡片组件 @@ -41,7 +42,7 @@ class KRHomeTrialCard extends GetView { ), ), GestureDetector( - onTap: () => Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP), + onTap: () => KRSubscribeNavigationUtil.navigateToPurchase(tag: 'TrialCard'), child: Row( children: [ Text( diff --git a/lib/app/modules/kr_home/widgets/kr_subscription_card.dart b/lib/app/modules/kr_home/widgets/kr_subscription_card.dart index 6153b3d..109cf59 100755 --- a/lib/app/modules/kr_home/widgets/kr_subscription_card.dart +++ b/lib/app/modules/kr_home/widgets/kr_subscription_card.dart @@ -4,6 +4,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:kaer_with_panels/app/localization/app_translations.dart'; import 'package:kaer_with_panels/app/routes/app_pages.dart'; +import 'package:kaer_with_panels/app/utils/kr_subscribe_navigation_util.dart'; import '../../../widgets/kr_app_text_style.dart'; @@ -65,7 +66,7 @@ class KRSubscriptionCard extends StatelessWidget { width: double.infinity, height: 42.h, child: ElevatedButton( - onPressed: () => Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP), + onPressed: () => KRSubscribeNavigationUtil.navigateToPurchase(tag: 'SubscriptionCard'), style: ElevatedButton.styleFrom( backgroundColor: Colors.blue, elevation: 0, diff --git a/lib/app/modules/kr_user_info/views/kr_user_info_view.dart b/lib/app/modules/kr_user_info/views/kr_user_info_view.dart index 8303fb1..421bb60 100755 --- a/lib/app/modules/kr_user_info/views/kr_user_info_view.dart +++ b/lib/app/modules/kr_user_info/views/kr_user_info_view.dart @@ -14,6 +14,7 @@ import 'package:kaer_with_panels/app/widgets/kr_app_text_style.dart'; import 'package:kaer_with_panels/app/widgets/kr_local_image.dart'; import 'package:kaer_with_panels/app/modules/kr_main/controllers/kr_main_controller.dart'; import 'package:kaer_with_panels/app/modules/kr_home/widgets/kr_subscribe_selector_view.dart'; +import 'package:kaer_with_panels/app/utils/kr_subscribe_navigation_util.dart'; import '../../../common/app_run_data.dart'; import '../../../model/response/kr_user_available_subscribe.dart'; import '../../../services/kr_subscribe_service.dart'; @@ -533,7 +534,7 @@ class KRUserInfoView extends GetView { children: [ Expanded( child: ElevatedButton( - onPressed: () => Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP), + onPressed: () => KRSubscribeNavigationUtil.navigateToPurchase(tag: 'UserInfo'), style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFF1797FF), foregroundColor: Colors.white, @@ -597,7 +598,7 @@ class KRUserInfoView extends GetView { ElevatedButton( onPressed: !isLoggedIn ? () => Get.find().kr_setPage(0) - : () => Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP), + : () => KRSubscribeNavigationUtil.navigateToPurchase(tag: 'UserInfo'), style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFF1797FF), foregroundColor: Colors.white, diff --git a/lib/app/utils/kr_subscribe_navigation_util.dart b/lib/app/utils/kr_subscribe_navigation_util.dart new file mode 100644 index 0000000..6784f9e --- /dev/null +++ b/lib/app/utils/kr_subscribe_navigation_util.dart @@ -0,0 +1,45 @@ +import 'package:get/get.dart'; +import 'package:kaer_with_panels/app/common/app_run_data.dart'; +import 'package:kaer_with_panels/app/widgets/dialogs/kr_dialog.dart'; +import 'package:kaer_with_panels/app/routes/app_pages.dart'; +import 'package:kaer_with_panels/app/utils/kr_log_util.dart'; + +/// 订阅导航工具类 +/// 用于统一处理订阅相关的导航逻辑 +class KRSubscribeNavigationUtil { + /// 导航到购买会员页面 + /// 如果是设备登录用户,会先提示需要绑定账号,然后跳转到登录页面 + /// 如果是普通用户,直接跳转到购买会员页面 + /// + /// [tag] 调用来源标签,用于日志记录 + static void navigateToPurchase({String tag = 'Subscribe'}) { + final appRunData = KRAppRunData.getInstance(); + final isDeviceLogin = appRunData.isDeviceLogin(); + final account = appRunData.kr_account.value; + + KRLogUtil.kr_i('=== 订阅按钮点击 ===', tag: tag); + KRLogUtil.kr_i('账号: $account', tag: tag); + KRLogUtil.kr_i('是否设备登录: $isDeviceLogin', tag: tag); + + if (isDeviceLogin) { + // 设备登录用户需要绑定账号 + KRLogUtil.kr_i('检测到设备登录,显示绑定提示', tag: tag); + KRDialog.show( + title: '提示', + message: '购买套餐需要登录绑定用户', + confirmText: '确定', + cancelText: '取消', + onConfirm: () { + Get.back(); // 关闭对话框 + // 跳转到登录页面(保持设备登录状态) + Get.toNamed(Routes.MR_LOGIN); + }, + onCancel: () => Get.back(), + ); + } else { + // 正常流程 - 跳转到购买页面 + KRLogUtil.kr_i('普通用户,跳转到购买页面', tag: tag); + Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP); + } + } +}