keyboard_controller.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import 'dart:async';
  2. import 'package:flutter/widgets.dart';
  3. import 'package:get/get.dart';
  4. import 'package:injectable/injectable.dart';
  5. import 'package:keyboard/base/base_controller.dart';
  6. import 'package:keyboard/data/api/response/keyboard_home_info_response.dart';
  7. import 'package:keyboard/data/repository/keyboard_repository.dart';
  8. import 'package:keyboard/module/keyboard_manage/keyboard_manage_page.dart';
  9. import 'package:keyboard/module/store/store_page.dart';
  10. @injectable
  11. class KeyBoardController extends BaseController {
  12. final tag = "KeyBoardController";
  13. final KeyboardRepository keyboardRepository;
  14. KeyboardHomeInfoResponse? get homeInfo => keyboardRepository.homeInfo.value;
  15. static const int countdownTime = 10 * 60 * 100;
  16. final RxInt timeLeft = countdownTime.obs;
  17. Timer? _timer;
  18. // 各项指标数据
  19. final moodPercentage = 20.obs;
  20. final appearancePercentage = 50.obs;
  21. final wealthPercentage = 30.obs;
  22. final cleanlinessPercentage = 50.obs;
  23. KeyBoardController(this.keyboardRepository);
  24. @override
  25. void onInit() {
  26. super.onInit();
  27. startCountdown();
  28. }
  29. void clickVip() {
  30. StorePage.start();
  31. }
  32. void clickIntimacyAnalyze() {
  33. debugPrint("click intimacy analyze");
  34. }
  35. void clickScreenshotReply() {
  36. debugPrint("click screenshot reply");
  37. }
  38. void clickEasyReply() {
  39. debugPrint("click easy reply");
  40. }
  41. void clickGoKeyboardManage() {
  42. KeyboardManagePage.start();
  43. }
  44. void startCountdown() {
  45. _timer = Timer.periodic(const Duration(milliseconds: 10), (timer) {
  46. if (timeLeft.value > 0) {
  47. timeLeft.value--;
  48. } else {
  49. timer.cancel();
  50. }
  51. });
  52. }
  53. @override
  54. void onClose() {
  55. super.onClose();
  56. _timer?.cancel();
  57. }
  58. String get formattedTime {
  59. final totalMillis = timeLeft.value * 10;
  60. final duration = Duration(milliseconds: totalMillis);
  61. final minutes = duration.inMinutes.toString().padLeft(2, '0');
  62. final seconds = (duration.inSeconds % 60).toString().padLeft(2, '0');
  63. final milliseconds = ((duration.inMilliseconds % 1000) ~/ 10)
  64. .toString()
  65. .padLeft(2, '0');
  66. return "$minutes:$seconds:$milliseconds";
  67. }
  68. }