优化订阅逻辑-未绑定账号的必须登录才可以购买套餐
This commit is contained in:
parent
de9cf751f3
commit
135d60aaa6
@ -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_app_text_style.dart';
|
||||||
import 'package:kaer_with_panels/app/widgets/kr_local_image.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/routes/app_pages.dart';
|
||||||
|
import 'package:kaer_with_panels/app/utils/kr_subscribe_navigation_util.dart';
|
||||||
import '../controllers/kr_home_controller.dart';
|
import '../controllers/kr_home_controller.dart';
|
||||||
import '../models/kr_home_views_status.dart';
|
import '../models/kr_home_views_status.dart';
|
||||||
|
|
||||||
@ -43,8 +44,8 @@ class KRHomeConnectionOptionsView extends GetView<KRHomeController> {
|
|||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (controller.kr_subscribeService.kr_currentSubscribe.value == null) {
|
if (controller.kr_subscribeService.kr_currentSubscribe.value == null) {
|
||||||
// 未订阅状态下跳转到购买会员页面
|
// 未订阅状态下,使用统一的订阅导航工具
|
||||||
Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP);
|
KRSubscribeNavigationUtil.navigateToPurchase(tag: 'ConnectionOptions');
|
||||||
} else {
|
} else {
|
||||||
// 已订阅状态下执行原有的点击事件
|
// 已订阅状态下执行原有的点击事件
|
||||||
onTap?.call();
|
onTap?.call();
|
||||||
|
|||||||
@ -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/localization/app_translations.dart';
|
||||||
import 'package:kaer_with_panels/app/widgets/kr_app_text_style.dart';
|
import 'package:kaer_with_panels/app/widgets/kr_app_text_style.dart';
|
||||||
import '../../../routes/app_pages.dart';
|
import '../../../routes/app_pages.dart';
|
||||||
|
import '../../../utils/kr_subscribe_navigation_util.dart';
|
||||||
import '../controllers/kr_home_controller.dart';
|
import '../controllers/kr_home_controller.dart';
|
||||||
|
|
||||||
|
|
||||||
@ -40,7 +41,7 @@ class KRHomeLastDayCard extends GetView<KRHomeController> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () => Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP),
|
onTap: () => KRSubscribeNavigationUtil.navigateToPurchase(tag: 'LastDayCard'),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import 'package:kaer_with_panels/app/widgets/kr_app_text_style.dart';
|
|||||||
import '../../../routes/app_pages.dart';
|
import '../../../routes/app_pages.dart';
|
||||||
import '../../../services/kr_subscribe_service.dart';
|
import '../../../services/kr_subscribe_service.dart';
|
||||||
import '../../../utils/kr_log_util.dart';
|
import '../../../utils/kr_log_util.dart';
|
||||||
|
import '../../../utils/kr_subscribe_navigation_util.dart';
|
||||||
import '../controllers/kr_home_controller.dart';
|
import '../controllers/kr_home_controller.dart';
|
||||||
|
|
||||||
/// 试用卡片组件
|
/// 试用卡片组件
|
||||||
@ -41,7 +42,7 @@ class KRHomeTrialCard extends GetView<KRHomeController> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () => Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP),
|
onTap: () => KRSubscribeNavigationUtil.navigateToPurchase(tag: 'TrialCard'),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
|
|||||||
@ -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/localization/app_translations.dart';
|
||||||
|
|
||||||
import 'package:kaer_with_panels/app/routes/app_pages.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';
|
import '../../../widgets/kr_app_text_style.dart';
|
||||||
|
|
||||||
@ -65,7 +66,7 @@ class KRSubscriptionCard extends StatelessWidget {
|
|||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: 42.h,
|
height: 42.h,
|
||||||
child: ElevatedButton(
|
child: ElevatedButton(
|
||||||
onPressed: () => Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP),
|
onPressed: () => KRSubscribeNavigationUtil.navigateToPurchase(tag: 'SubscriptionCard'),
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: Colors.blue,
|
backgroundColor: Colors.blue,
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
|
|||||||
@ -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/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_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/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 '../../../common/app_run_data.dart';
|
||||||
import '../../../model/response/kr_user_available_subscribe.dart';
|
import '../../../model/response/kr_user_available_subscribe.dart';
|
||||||
import '../../../services/kr_subscribe_service.dart';
|
import '../../../services/kr_subscribe_service.dart';
|
||||||
@ -533,7 +534,7 @@ class KRUserInfoView extends GetView<KRUserInfoController> {
|
|||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: ElevatedButton(
|
child: ElevatedButton(
|
||||||
onPressed: () => Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP),
|
onPressed: () => KRSubscribeNavigationUtil.navigateToPurchase(tag: 'UserInfo'),
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: const Color(0xFF1797FF),
|
backgroundColor: const Color(0xFF1797FF),
|
||||||
foregroundColor: Colors.white,
|
foregroundColor: Colors.white,
|
||||||
@ -597,7 +598,7 @@ class KRUserInfoView extends GetView<KRUserInfoController> {
|
|||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: !isLoggedIn
|
onPressed: !isLoggedIn
|
||||||
? () => Get.find<KRMainController>().kr_setPage(0)
|
? () => Get.find<KRMainController>().kr_setPage(0)
|
||||||
: () => Get.toNamed(Routes.KR_PURCHASE_MEMBERSHIP),
|
: () => KRSubscribeNavigationUtil.navigateToPurchase(tag: 'UserInfo'),
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: const Color(0xFF1797FF),
|
backgroundColor: const Color(0xFF1797FF),
|
||||||
foregroundColor: Colors.white,
|
foregroundColor: Colors.white,
|
||||||
|
|||||||
45
lib/app/utils/kr_subscribe_navigation_util.dart
Normal file
45
lib/app/utils/kr_subscribe_navigation_util.dart
Normal file
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user