import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:injectable/injectable.dart'; import 'package:keyboard/base/base_controller.dart'; import 'package:keyboard/module/intimacy_analyse/screenshot_reply/intimacy_analyse_screenshot_reply_controller.dart'; import 'package:keyboard/resource/string.gen.dart'; import '../../data/consts/event_report.dart'; import '../../handler/event_handler.dart'; import '../../router/app_page_arguments.dart'; import '../../utils/atmob_log.dart'; import 'enums/intimacy_analyse_tab.dart'; import 'enums/screenshot_reply_tab.dart'; /// 亲密度分析Controller @injectable class IntimacyAnalyseController extends BaseController with GetTickerProviderStateMixin { final String _tag = "IntimacyAnalyseController"; /// Tab列表 RxList tabBarList = IntimacyAnalyseTab.values.map((item) => item.getTabName()).toList().obs; /// Tab控制器 late final TabController tabController; /// PageView控制器 late final PageController pageController; /// PageView是否允许滑动切换 RxBool isPageViewSwipeEnabled = false.obs; /// 当前Tab的索引 final RxInt _currentIndex = 0.obs; @override void onInit() { super.onInit(); _initArgs(); } /// 初始化参数 void _initArgs() { final arguments = Get.arguments as Map?; // 当前索引 int tabIndex = IntimacyAnalyseTab.intimacyAnalyseScreenshotReply.tabIndex; if (arguments?[AppPageArguments.index] == null) { AtmobLog.i(_tag, '没有传递 index 参数'); } else { final int? index = arguments?[AppPageArguments.index] as int?; if (index != null) { tabIndex = index; AtmobLog.i(_tag, "index: $tabIndex"); } } // 创建PageController和TabController,并设置当前选中的index为初始索引 pageController = PageController(initialPage: tabIndex); tabController = TabController( initialIndex: tabIndex, length: tabBarList.length, vsync: this, ); _reportEvent(tabIndex); _currentIndex.listen((newIndex) { _reportEvent(newIndex); }); } /// 返回上一页 void clickBack() { Get.back(); } @override void onClose() { tabController.dispose(); pageController.dispose(); super.onClose(); } /// 处理Tab切换,联动PageView void handleTabChange(int index) { if (_currentIndex.value == index) { return; } pageController.animateToPage( index, duration: const Duration(milliseconds: 300), curve: Curves.fastOutSlowIn, ); _currentIndex.value = index; } /// 处理PageView切换,联动Tab void handlePageChange(int index) { if (_currentIndex.value == index) { return; } tabController.animateTo(index, duration: const Duration(milliseconds: 300)); _currentIndex.value = index; } /// 埋点 void _reportEvent(int index) { if (index == IntimacyAnalyseTab.intimacyAnalyseReport.tabIndex) { EventHandler.report(EventId.event_09001); } else if (index == IntimacyAnalyseTab.intimacyAnalyseScreenshotReply.tabIndex) { if (Get.isRegistered()) { var controller = Get.find(); if (controller.currentTabIndex.value == ScreenshotReplyTab.conversationAnalysis.tabIndex) { EventHandler.report(EventId.event_10001); } else { EventHandler.report(EventId.event_10004); } } else { EventHandler.report(EventId.event_10001); } } } }