import 'dart:async'; import 'package:flutter/widgets.dart'; import 'package:get/get.dart'; import 'package:injectable/injectable.dart'; import 'package:keyboard/base/base_controller.dart'; import 'package:keyboard/data/api/response/keyboard_home_info_response.dart'; import 'package:keyboard/data/repository/keyboard_repository.dart'; import 'package:keyboard/module/intimacy_analyse/enums/intimacy_analyse_tab.dart'; import 'package:keyboard/module/keyboard_manage/keyboard_manage_page.dart'; import 'package:keyboard/module/store/new_discount/new_discount_page.dart'; import 'package:keyboard/module/store/store_page.dart'; import '../../data/api/response/keyboard_love_index_response.dart'; import '../../utils/atmob_log.dart'; import '../intimacy_analyse/intimacy_analyse_page.dart'; import '../intimacy_scale/intimacy_scale_page.dart'; import '../keyboard_guide/keyboard_guide_page.dart'; import '../profile/profile_page.dart'; @injectable class KeyBoardController extends BaseController { final tag = "KeyBoardController"; final KeyboardRepository keyboardRepository; KeyboardHomeInfoResponse? get homeInfo => keyboardRepository.homeInfo.value; Rxn get loveIndex => keyboardRepository.homeLoveIndex; static const int countdownTime = 10 * 60 * 100; final RxInt timeLeft = countdownTime.obs; Timer? _timer; final RxBool isShowBanner = true.obs; // 各项指标数据 KeyBoardController(this.keyboardRepository); @override void onInit() { super.onInit(); startCountdown(); } void clickVip() { StorePage.start(); } void clickIntimacyAnalyze() { debugPrint("click intimacy analyze"); IntimacyAnalysePage.start(tab: IntimacyAnalyseTab.intimacyAnalyseReport); } void clickScreenshotReply() { debugPrint("click screenshot reply"); IntimacyAnalysePage.start( tab: IntimacyAnalyseTab.intimacyAnalyseScreenshotReply, ); } void clickEasyReply() { KeyboardGuidePage.start(); debugPrint("click easy reply"); } void clickGoKeyboardManage() { KeyboardManagePage.start(); } void clickCloseBanner() { isShowBanner.value = false; debugPrint("click close banner"); } void clickAvatar(bool isUser) { debugPrint("click avatar"); if (!isUser) { ProfilePage.start(); } } void clickBanner() { debugPrint("click banner"); NewDiscountPage.start(); } void clickLovePercentage(){ IntimacyScalePage.start(); } void startCountdown() { _timer = Timer.periodic(const Duration(milliseconds: 10), (timer) { if (timeLeft.value > 0) { timeLeft.value--; } else { timer.cancel(); } }); } @override void onClose() { super.onClose(); _timer?.cancel(); } String get formattedTime { final totalMillis = timeLeft.value * 10; final duration = Duration(milliseconds: totalMillis); final minutes = duration.inMinutes.toString().padLeft(2, '0'); final seconds = (duration.inSeconds % 60).toString().padLeft(2, '0'); final milliseconds = ((duration.inMilliseconds % 1000) ~/ 10) .toString() .padLeft(2, '0'); return "$minutes:$seconds:$milliseconds"; } }