113 lines
3.2 KiB
Dart
113 lines
3.2 KiB
Dart
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<LaunchController>();
|
||
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<void> _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);
|
||
},
|
||
);
|
||
}
|
||
}
|