Преглед изворни кода

[feat]亲密度分析,修改埋点

hezihao пре 8 месеци
родитељ
комит
c612eacc6a

+ 1 - 1
lib/module/intimacy_analyse/enums/intimacy_analyse_tab.dart

@@ -24,7 +24,7 @@ enum IntimacyAnalyseTab {
   }
 
   /// 通过index,查找对应的Tab枚举实例
-  IntimacyAnalyseTab fromIndex(int index) {
+  static IntimacyAnalyseTab fromIndex(int index) {
     return IntimacyAnalyseTab.values.firstWhere(
       (element) => element.tabIndex == index,
       orElse: () => intimacyAnalyseReport,

+ 33 - 0
lib/module/intimacy_analyse/enums/screenshot_reply_tab.dart

@@ -0,0 +1,33 @@
+import '../../../resource/string.gen.dart';
+
+/// 截图回复Tab枚举
+enum ScreenshotReplyTab {
+  /// 对话分析Tab
+  conversationAnalysis(0),
+
+  /// 识图回复Tab
+  scanImageReply(1);
+
+  /// Tab所在页面的索引
+  final int tabIndex;
+
+  const ScreenshotReplyTab(this.tabIndex);
+
+  /// 获取Tab名称
+  String getTabName() {
+    switch (this) {
+      case conversationAnalysis:
+        return StringName.intimacyAnalyseTabConversationAnalysis;
+      case scanImageReply:
+        return StringName.intimacyAnalyseTabScanImageReply;
+    }
+  }
+
+  /// 通过index,查找对应的Tab枚举实例
+  static ScreenshotReplyTab fromIndex(int index) {
+    return ScreenshotReplyTab.values.firstWhere(
+          (element) => element.tabIndex == index,
+      orElse: () => conversationAnalysis,
+    );
+  }
+}

+ 35 - 6
lib/module/intimacy_analyse/intimacy_analyse_controller.dart

@@ -2,6 +2,7 @@ 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';
@@ -9,6 +10,7 @@ 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
@@ -29,6 +31,9 @@ class IntimacyAnalyseController extends BaseController
   /// PageView是否允许滑动切换
   RxBool isPageViewSwipeEnabled = false.obs;
 
+  /// 当前Tab的索引
+  final RxInt _currentIndex = 0.obs;
+
   @override
   void onInit() {
     super.onInit();
@@ -63,9 +68,22 @@ class IntimacyAnalyseController extends BaseController
       EventHandler.report(EventId.event_09001);
     } else if (tabIndex ==
         IntimacyAnalyseTab.intimacyAnalyseScreenshotReply.tabIndex) {
-      EventHandler.report(EventId.event_10001);
+      if (Get.isRegistered<IntimacyAnalyseScreenshotReplyController>()) {
+        var controller = Get.find<IntimacyAnalyseScreenshotReplyController>();
+        if (controller.currentTabIndex.value ==
+            ScreenshotReplyTab.conversationAnalysis.tabIndex) {
+          EventHandler.report(EventId.event_10001);
+        } else {
+          EventHandler.report(EventId.event_10004);
+        }
+      } else {
+        EventHandler.report(EventId.event_10001);
+      }
     }
 
+    _currentIndex.listen((newIndex) {
+      _reportEvent(newIndex);
+    });
   }
 
   /// 返回上一页
@@ -82,12 +100,28 @@ class IntimacyAnalyseController extends BaseController
 
   /// 处理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 ==
@@ -95,9 +129,4 @@ class IntimacyAnalyseController extends BaseController
       EventHandler.report(EventId.event_10001);
     }
   }
-
-  /// 处理PageView切换,联动Tab
-  void handlePageChange(int index) {
-    tabController.animateTo(index, duration: const Duration(milliseconds: 300));
-  }
 }

+ 10 - 13
lib/module/intimacy_analyse/screenshot_reply/intimacy_analyse_screenshot_reply_controller.dart

@@ -7,17 +7,14 @@ import 'package:keyboard/base/base_controller.dart';
 import '../../../data/consts/event_report.dart';
 import '../../../handler/event_handler.dart';
 import '../../../resource/string.gen.dart';
+import '../enums/screenshot_reply_tab.dart';
 
 /// 亲密度分析-截图回复Tab页-controller
 @injectable
 class IntimacyAnalyseScreenshotReplyController extends BaseController
     with GetTickerProviderStateMixin {
   /// Tab列表
-  RxList<String> tabBarList =
-      <String>[
-        StringName.intimacyAnalyseTabConversationAnalysis,
-        StringName.intimacyAnalyseTabScanImageReply,
-      ].obs;
+  RxList<ScreenshotReplyTab> tabBarList = ScreenshotReplyTab.values.obs;
 
   /// Tab控制器
   late final TabController tabController = TabController(
@@ -29,12 +26,12 @@ class IntimacyAnalyseScreenshotReplyController extends BaseController
   final PageController pageController = PageController();
 
   /// 当前索引
-  final RxInt _currentIndex = 0.obs;
+  final RxInt currentTabIndex = 0.obs;
 
   @override
   void onInit() {
     super.onInit();
-    _currentIndex.listen((newIndex) {
+    currentTabIndex.listen((newIndex) {
       _reportEvent(newIndex);
     });
   }
@@ -48,7 +45,7 @@ class IntimacyAnalyseScreenshotReplyController extends BaseController
 
   /// 处理Tab切换,联动PageView
   void handleTabChange(int index) {
-    if (_currentIndex.value == index) {
+    if (currentTabIndex.value == index) {
       return;
     }
     pageController.animateToPage(
@@ -56,24 +53,24 @@ class IntimacyAnalyseScreenshotReplyController extends BaseController
       duration: const Duration(milliseconds: 300),
       curve: Curves.fastOutSlowIn,
     );
-    _currentIndex.value = index;
+    currentTabIndex.value = index;
   }
 
   /// 处理PageView切换,联动Tab
   void handlePageChange(int index) {
-    if (_currentIndex.value == index) {
+    if (currentTabIndex.value == index) {
       return;
     }
     tabController.animateTo(index, duration: const Duration(milliseconds: 300));
-    _currentIndex.value = index;
+    currentTabIndex.value = index;
   }
 
   /// 埋点
   void _reportEvent(int index) {
     // 识图回复
-    if (index == 0) {
+    if (index == ScreenshotReplyTab.conversationAnalysis.tabIndex) {
       EventHandler.report(EventId.event_10001);
-    } else if (index == 1) {
+    } else if (index == ScreenshotReplyTab.scanImageReply.tabIndex) {
       EventHandler.report(EventId.event_10004);
     }
   }

+ 2 - 2
lib/module/intimacy_analyse/screenshot_reply/intimacy_analyse_screenshot_reply_view.dart

@@ -85,11 +85,11 @@ class IntimacyAnalyseScreenshotReplyView
               ),
               // 配置Tab数据
               tabs:
-                  controller.tabBarList.mapIndexed((int index, tabName) {
+                  controller.tabBarList.mapIndexed((int index, tab) {
                     return Tab(
                       child: SizedBox(
                         width: 127.w,
-                        child: Center(child: Text(tabName)),
+                        child: Center(child: Text(tab.getTabName())),
                       ),
                     );
                   }).toList(),