intimacy_analyse_controller.dart 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:injectable/injectable.dart';
  4. import 'package:keyboard/base/base_controller.dart';
  5. import 'package:keyboard/resource/string.gen.dart';
  6. /// 亲密度分析Controller
  7. @injectable
  8. class IntimacyAnalyseController extends BaseController
  9. with GetTickerProviderStateMixin {
  10. /// Tab列表
  11. RxList<String> tabBarList =
  12. <String>[
  13. StringName.intimacyAnalyseTabReport,
  14. StringName.intimacyAnalyseTabScreenshotReply,
  15. ].obs;
  16. /// Tab控制器
  17. late final TabController tabController = TabController(
  18. length: tabBarList.length,
  19. vsync: this,
  20. );
  21. /// PageView控制器
  22. final PageController pageController = PageController();
  23. /// 返回上一页
  24. void clickBack() {
  25. Get.back();
  26. }
  27. @override
  28. void onInit() {
  29. super.onInit();
  30. }
  31. @override
  32. void onClose() {
  33. tabController.dispose();
  34. pageController.dispose();
  35. super.onClose();
  36. }
  37. /// 处理Tab切换,联动PageView
  38. void handleTabChange(int index) {
  39. if (!tabController.indexIsChanging) {
  40. pageController.animateToPage(
  41. index,
  42. duration: const Duration(milliseconds: 300),
  43. curve: Curves.easeInToLinear,
  44. );
  45. }
  46. }
  47. /// 处理PageView切换,联动Tab
  48. void handlePageChange(int index) {
  49. tabController.animateTo(
  50. index,
  51. duration: const Duration(milliseconds: 300),
  52. );
  53. }
  54. }