import 'dart:async'; import 'package:get/get.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:tone_snap/ads/interstitial_ad_manager.dart'; import 'package:tone_snap/data/enum/ad_scenes.dart'; import 'package:tone_snap/data/enum/app_side_enum.dart'; import 'package:tone_snap/data/storage/music_box.dart'; import 'package:tone_snap/firebase/firebase_analytics_manager.dart'; import 'package:tone_snap/global/app_config.dart'; import 'package:tone_snap/global/network_connectivity_service.dart'; import 'package:tone_snap/modules/sideb/controllers/main_controller.dart'; import 'package:tone_snap/routes/app_routes.dart'; import 'package:tone_snap/utils/log_util.dart'; class LaunchController extends GetxController with GetSingleTickerProviderStateMixin { static LaunchController get to => Get.find(); Timer? _timer; /// 进度总时长 var timeTotal = 10 * 1000; /// 当前进度 var currentProcess = 0.obs; /// 进度每次变化值 var changeValue = 10; @override void onInit() { super.onInit(); _startTimer(); Get.put(NetworkConnectivityService()); FirebaseAnalyticsManager.logLaunchPV(); } @override void onClose() { _stopTimer(); super.onClose(); } /// 开始定时器 void _startTimer() { _timer = Timer.periodic(const Duration(milliseconds: 10), (Timer t) { if (currentProcess.value + changeValue >= timeTotal) { currentProcess.value = timeTotal; _stopTimer(); _checkEnter(); return; } currentProcess.value += changeValue; }); } /// 停止定时器 void _stopTimer() { _timer?.cancel(); _timer = null; } /// 修改进度变化值 void editChangeValue() { changeValue = 200; } /// 校验开关和版本,决定进A还是B Future _checkEnter() async { bool isOpenedSideB = MusicBox().getIsOpenedSideB(); if (isOpenedSideB) { LogUtil.d('进入过B面'); _openSideB('进入过B面'); } else { bool enter = MusicBox().getEnter(); String versionCode = await MusicBox().getVersionCode(); final packageInfo = await PackageInfo.fromPlatform(); if (versionCode != packageInfo.version) { LogUtil.d('版本不相同,进入B面'); _openSideB('版本不相同'); } else { if (enter) { LogUtil.d('开关:打开'); _openSideB('版本相同, 开关打开'); } else { LogUtil.d('开关:关闭'); _openSideA(); } } } } void _openSideA() { InterstitialAdManager().showAdIfAvailable( AdScenes.coldLoading.name, onTap: () { AppConfig.appSideEnum = AppSideEnum.sideA; Get.offNamed(AppRoutes.initialA); FirebaseAnalyticsManager.logJumpEvent('A', '版本相同,开关关闭'); }, ); } void _openSideB(String reason) { InterstitialAdManager().showAdIfAvailable( AdScenes.coldLoading.name, onTap: () { AppConfig.appSideEnum = AppSideEnum.sideB; MainController.to.changeTheme(); Get.offNamed(AppRoutes.initialB); MusicBox().putIsOpenedSideB(true); FirebaseAnalyticsManager.logJumpEvent('B', reason); }, ); } }