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/keyboard_manage/keyboard_manage_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 '../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"); } void clickScreenshotReply() { debugPrint("click screenshot reply"); } void clickEasyReply() { 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 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"; } }