intro_controller.dart 1.6 KB

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