| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- import 'dart:io';
- import 'package:flutter/cupertino.dart';
- import 'package:get/get.dart';
- import 'package:get/get_core/src/get_main.dart';
- import 'package:injectable/injectable.dart';
- import 'package:location/base/base_controller.dart';
- import 'package:location/data/repositories/account_repository.dart';
- import 'package:location/data/repositories/member_repository.dart';
- import '../../../data/bean/goods_bean.dart';
- import '../../../data/bean/member_status_info.dart';
- import '../../../data/bean/pay_item_bean.dart';
- import '../../../data/consts/web_url.dart';
- import '../../../handler/error_handler.dart';
- import '../../../helper/member_pay_helper.dart';
- import '../../../resource/assets.gen.dart';
- import '../../../resource/string.gen.dart';
- import '../../../utils/async_util.dart';
- import '../../../utils/toast_util.dart';
- import '../../browser/browser_view.dart';
- @injectable
- class MemberActivityController extends BaseController {
- final Rxn<GoodsBean> _selectedGoods = Rxn<GoodsBean>();
- GoodsBean? get selectedGoods => _selectedGoods.value;
- MemberStatusInfo? get memberStatusInfo =>
- accountRepository.memberStatusInfo.value;
- final List<ImageProvider> funImages = [
- Assets.images.imgMemberActivityBanner1.provider(),
- Assets.images.imgMemberActivityBanner2.provider(),
- Assets.images.imgMemberActivityBanner3.provider(),
- Assets.images.imgMemberActivityBanner4.provider(),
- ];
- final RxList<GoodsBean> goodsList = <GoodsBean>[].obs;
- final List<PayItemBean> payItemList = <PayItemBean>[];
- CancelableFuture? _memberDataFuture;
- final AccountRepository accountRepository;
- final MemberRepository memberRepository;
- final MemberPayHelper memberPayHelper;
- Duration? get activityDuration => memberRepository.activityDuration.value;
- MemberActivityController(
- this.accountRepository, this.memberRepository, this.memberPayHelper);
- @override
- void onReady() {
- super.onReady();
- refreshMemberData();
- memberRepository.startActivityCountdown();
- precacheImage(
- Assets.images.iconMemberSpecialProductsSelect.provider(), Get.context!);
- precacheImage(
- Assets.images.iconMemberSpecialProductsNormal.provider(), Get.context!);
- }
- void refreshMemberData() {
- _memberDataFuture?.cancel();
- _memberDataFuture =
- AsyncUtil.retryWithExponentialBackoff(() => _requestMemberData(), 4);
- _memberDataFuture?.catchError((error) {
- ErrorHandler.toastError(error);
- });
- }
- Future<void> _requestMemberData() {
- return memberRepository
- .guideItemList(itemListType: Platform.isIOS ? 2 : 0)
- .then((response) {
- goodsList.clear();
- payItemList.clear();
- _selectedGoods.value = null;
- if (response.payInfoList?.isNotEmpty == true) {
- payItemList.addAll(response.payInfoList!);
- }
- if (response.goodsList?.isNotEmpty == true) {
- goodsList.addAll(response.goodsList!);
- _selectedGoods.value = goodsList.first;
- }
- if (goodsList.isNotEmpty && payItemList.isNotEmpty) {
- memberRepository.setLastSelectedMember(
- goodsList.first, payItemList.first);
- }
- });
- }
- void onBack() {
- Get.back();
- }
- void onBuyClick() {
- if (payItemList.isEmpty) {
- ToastUtil.show(StringName.memberActivityNoPayway);
- return;
- }
- memberPayHelper.launchPay(selectedGoods, payItemList.first);
- }
- void onGoodsItemClick(GoodsBean goodsInfo) {
- _selectedGoods.value = goodsInfo;
- onBuyClick();
- }
- void onPrivacyPolicyClick() {
- BrowserPage.start(WebUrl.privacyPolicy);
- }
- void onTermOfServiceClick() {
- BrowserPage.start(WebUrl.userAgreement);
- }
- void onRenewalAgreementClick() {
- BrowserPage.start(WebUrl.renewalAgreement);
- }
- void onRecoverClick() {}
- @override
- void onClose() {
- super.onClose();
- _memberDataFuture?.cancel();
- }
- }
|