intro_controller.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import 'dart:async';
  2. import 'package:clean/base/base_controller.dart';
  3. import 'package:clean/data/consts/constants.dart';
  4. import 'package:clean/module/main/main_view.dart';
  5. import 'package:clean/resource/assets.gen.dart';
  6. import 'package:clean/router/app_pages.dart';
  7. import 'package:flutter/Material.dart';
  8. import 'package:get/get.dart';
  9. import '../../../data/consts/event_report_id.dart';
  10. import '../../../handler/event_handler.dart';
  11. class IntroController extends BaseController {
  12. Rx<PageController> pageController = PageController().obs;
  13. var currentPage = 0.obs;
  14. final List<PageBean> pageList = [
  15. PageBean("One tap smart cleaning", Assets.anim.animIntroFirst),
  16. PageBean(
  17. "AI algorithm for duplicates \n detected", Assets.anim.animIntroSecond),
  18. ];
  19. Timer? _autoPageTimer;
  20. @override
  21. void onInit() {
  22. super.onInit();
  23. }
  24. @override
  25. void onReady() {
  26. super.onReady();
  27. EventHandler.report(EventId.event_01003);
  28. _autoPageTimer = Timer.periodic(const Duration(seconds: 3), (timer) {
  29. swiperIntro();
  30. });
  31. }
  32. @override
  33. void onClose() {
  34. super.onClose();
  35. _autoPageTimer?.cancel();
  36. }
  37. void swiperIntro() {
  38. if (currentPage.value == pageList.length - 1) {
  39. // 进入主页或其他操作
  40. Timer(const Duration(milliseconds: 500), () {
  41. MainTabPage.start();
  42. setFirstIntro(false);
  43. });
  44. } else {
  45. // 跳转到下一页
  46. EventHandler.report(EventId.event_01005);
  47. pageController.value.nextPage(
  48. duration: const Duration(milliseconds: 500),
  49. curve: Curves.easeInOut,
  50. );
  51. currentPage.value++;
  52. }
  53. }
  54. void clickContinue() {
  55. EventHandler.report(EventId.event_01004);
  56. Timer(const Duration(milliseconds: 500), () {
  57. MainTabPage.start();
  58. setFirstIntro(false);
  59. });
  60. }
  61. }
  62. class PageBean {
  63. String title;
  64. String animUrl;
  65. PageBean(this.title, this.animUrl);
  66. }