|
@@ -33,13 +33,18 @@ import '../../dialog/wechat_qr_code_dialog.dart';
|
|
|
import '../../resource/string.gen.dart';
|
|
import '../../resource/string.gen.dart';
|
|
|
import '../../sdk/wechat/wechat_share_util.dart';
|
|
import '../../sdk/wechat/wechat_share_util.dart';
|
|
|
import '../../utils/http_handler.dart';
|
|
import '../../utils/http_handler.dart';
|
|
|
|
|
+import '../../utils/mmkv_util.dart';
|
|
|
import '../../utils/payment_status_manager.dart';
|
|
import '../../utils/payment_status_manager.dart';
|
|
|
import '../../widget/animated_switcher_widget.dart';
|
|
import '../../widget/animated_switcher_widget.dart';
|
|
|
import '../browser/browser_view.dart';
|
|
import '../browser/browser_view.dart';
|
|
|
|
|
+import '../mine/mine_controller.dart';
|
|
|
import 'member_evaluate_bean.dart';
|
|
import 'member_evaluate_bean.dart';
|
|
|
|
|
+import 'member_first_week_discount_dialog.dart';
|
|
|
import 'member_fun_bean.dart';
|
|
import 'member_fun_bean.dart';
|
|
|
import 'package:apple_pay/apple_pay.dart';
|
|
import 'package:apple_pay/apple_pay.dart';
|
|
|
|
|
+import 'member_page.dart';
|
|
|
import 'member_payment_completed_dialog.dart';
|
|
import 'member_payment_completed_dialog.dart';
|
|
|
|
|
+import 'member_user_cancel_pay_dialog.dart';
|
|
|
|
|
|
|
|
@injectable
|
|
@injectable
|
|
|
class MemberController extends BaseController implements PaymentStatusCallback {
|
|
class MemberController extends BaseController implements PaymentStatusCallback {
|
|
@@ -118,12 +123,15 @@ class MemberController extends BaseController implements PaymentStatusCallback {
|
|
|
"用来遛狗也很方便,再也不用担心狗狗跑丢了,真是个好工具!"),
|
|
"用来遛狗也很方便,再也不用担心狗狗跑丢了,真是个好工具!"),
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
|
|
+ static const String _keMemberPageShowKey = "member_page_show_key";
|
|
|
|
|
+
|
|
|
MemberController(
|
|
MemberController(
|
|
|
this.accountRepository, this.memberRepository, this.paymentStatusManager);
|
|
this.accountRepository, this.memberRepository, this.paymentStatusManager);
|
|
|
|
|
|
|
|
@override
|
|
@override
|
|
|
void onReady() async {
|
|
void onReady() async {
|
|
|
super.onReady();
|
|
super.onReady();
|
|
|
|
|
+ _isTherePopUpPrompt();
|
|
|
_startAnimationSwitcher();
|
|
_startAnimationSwitcher();
|
|
|
scrollController.addListener(() {
|
|
scrollController.addListener(() {
|
|
|
double offset = scrollController.offset;
|
|
double offset = scrollController.offset;
|
|
@@ -138,6 +146,24 @@ class MemberController extends BaseController implements PaymentStatusCallback {
|
|
|
refreshMemberData();
|
|
refreshMemberData();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ ///是否弹窗提示
|
|
|
|
|
+ void _isTherePopUpPrompt() {
|
|
|
|
|
+ MemberPageType pageType = Get.arguments ?? MemberPageType.universalAccessEnter;
|
|
|
|
|
+ if (pageType == MemberPageType.afeterTrialMemberEnter) {
|
|
|
|
|
+ MemberFirstWeekDiscountDialog.show(
|
|
|
|
|
+ confirmOnTap: () {
|
|
|
|
|
+ onBuyClick();
|
|
|
|
|
+ },
|
|
|
|
|
+ onPrivacyPolicyClick: () {
|
|
|
|
|
+ onPrivacyPolicyClick();
|
|
|
|
|
+ },
|
|
|
|
|
+ onTermOfServiceClick: () {
|
|
|
|
|
+ onTermOfServiceClick();
|
|
|
|
|
+ }
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
void _startAnimationSwitcher() {
|
|
void _startAnimationSwitcher() {
|
|
|
_changeStreamController = AsyncUtil.interval(
|
|
_changeStreamController = AsyncUtil.interval(
|
|
|
(time) => changeSwitcherContent(), Duration(seconds: 3), -1);
|
|
(time) => changeSwitcherContent(), Duration(seconds: 3), -1);
|
|
@@ -244,17 +270,46 @@ class MemberController extends BaseController implements PaymentStatusCallback {
|
|
|
back();
|
|
back();
|
|
|
if (accountRepository.memberIsExpired()) {
|
|
if (accountRepository.memberIsExpired()) {
|
|
|
FocusScope.of(Get.context!).unfocus();
|
|
FocusScope.of(Get.context!).unfocus();
|
|
|
- showRetainDialog();
|
|
|
|
|
|
|
+ userCancelsPaymentDisplay();
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
if (accountRepository.memberIsExpired()) {
|
|
if (accountRepository.memberIsExpired()) {
|
|
|
- showRetainDialog();
|
|
|
|
|
|
|
+ userCancelsPaymentDisplay();
|
|
|
} else {
|
|
} else {
|
|
|
back();
|
|
back();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ ///用户取消支付展示
|
|
|
|
|
+ void userCancelsPaymentDisplay() {
|
|
|
|
|
+ if (_isPopBackInProgress) {
|
|
|
|
|
+ // 如果正在处理返回逻辑,直接跳过
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ _isPopBackInProgress = true; // 锁定状态
|
|
|
|
|
+ //_keMemberPageShowKey
|
|
|
|
|
+ String? memberPageKeyStr = KVUtil.getString(_keMemberPageShowKey, '');
|
|
|
|
|
+ if ((memberPageKeyStr ?? '').isEmpty && (accountRepository.memberStatusInfo.value?.trialed == false)) {
|
|
|
|
|
+ ///永久化存储
|
|
|
|
|
+ KVUtil.putString(_keMemberPageShowKey, _keMemberPageShowKey);
|
|
|
|
|
+ MemberUserCancelPayDialog.show(payClick: () {
|
|
|
|
|
+ //获取会员
|
|
|
|
|
+ MineController attributionController = Get.find<MineController>();
|
|
|
|
|
+ attributionController.onMemberTryOutClick();
|
|
|
|
|
+ _isPopBackInProgress = false;
|
|
|
|
|
+ }, cancelClick: () {
|
|
|
|
|
+ _isPopBackInProgress = false;
|
|
|
|
|
+ if (!Platform.isIOS) {
|
|
|
|
|
+ back();
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ _isPopBackInProgress = false;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ///支付错误的时候调用
|
|
|
void showRetainDialog() {
|
|
void showRetainDialog() {
|
|
|
if (_isPopBackInProgress) {
|
|
if (_isPopBackInProgress) {
|
|
|
// 如果正在处理返回逻辑,直接跳过
|
|
// 如果正在处理返回逻辑,直接跳过
|
|
@@ -314,6 +369,8 @@ class MemberController extends BaseController implements PaymentStatusCallback {
|
|
|
ToastUtil.show(StringName.payNotSupport);
|
|
ToastUtil.show(StringName.payNotSupport);
|
|
|
}
|
|
}
|
|
|
}).catchError((error) {
|
|
}).catchError((error) {
|
|
|
|
|
+ //处理购买失败
|
|
|
|
|
+ showRetainDialog();
|
|
|
if (error is ServerErrorException) {
|
|
if (error is ServerErrorException) {
|
|
|
if (error.code == ErrorCode.payOrderError) {
|
|
if (error.code == ErrorCode.payOrderError) {
|
|
|
refreshMemberData();
|
|
refreshMemberData();
|
|
@@ -545,8 +602,11 @@ class MemberController extends BaseController implements PaymentStatusCallback {
|
|
|
@override
|
|
@override
|
|
|
void onPaymentSuccess(
|
|
void onPaymentSuccess(
|
|
|
String orderNo, PayItemBean paymentWay, GoodsBean storeItemBean) {
|
|
String orderNo, PayItemBean paymentWay, GoodsBean storeItemBean) {
|
|
|
- ///购买成功之后弹出
|
|
|
|
|
- afterTheFirstPurchasePromptSharingBoxPops();
|
|
|
|
|
|
|
+ MemberPageType pageType = Get.arguments ?? MemberPageType.universalAccessEnter;
|
|
|
|
|
+ if (pageType == MemberPageType.addFriendToEnter) {
|
|
|
|
|
+ ///购买成功之后弹出
|
|
|
|
|
+ afterTheFirstPurchasePromptSharingBoxPops();
|
|
|
|
|
+ }
|
|
|
try {
|
|
try {
|
|
|
WechatQrCodeDialog.dismiss();
|
|
WechatQrCodeDialog.dismiss();
|
|
|
AlipayQrCodeDialog.dismiss();
|
|
AlipayQrCodeDialog.dismiss();
|