Initial commit: 91dj android client dev_1.0.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
谢宇宁
2026-10-08 11:37:25 +07:00
co-authored by Claude Opus 5.5
commit 97dd6a739a
1262 changed files with 119813 additions and 0 deletions
@@ -0,0 +1,51 @@
// lib/extension/tab_analytics_extension.dart
import 'package:analytics_sdk/entity/analytics_tab.dart';
import 'package:analytics_sdk/widget/analytics_bottom_nav_wrapper.dart';
import 'package:analytics_sdk/widget/analytics_tab_bar_wrapper.dart';
import 'package:flutter/material.dart';
/// 为 [BottomNavigationBar] 提供 analytics 自动埋点能力。
///
/// 示例:
/// ```dart
/// BottomNavigationBar(
/// currentIndex: _index,
/// onTap: (i) => setState(() => _index = i),
/// items: const [...],
/// ).withAnalytics(tabs: [
/// AnalyticsTab('home', '首页'),
/// AnalyticsTab('discover'), // pageName 走 PageNameMapper 自动解析
/// ])
/// ```
extension AnalyticsBottomNavExtension on BottomNavigationBar {
/// 切换 Tab 时自动上报 AppPageViewEvent + NavigationEvent,
/// 并更新 PageLifecycleObserver.currentPageKey。
Widget withAnalytics({required List<AnalyticsTab> tabs}) {
return AnalyticsBottomNavWrapper(
tabs: tabs,
child: this,
);
}
}
/// 为 [TabBar] 提供 analytics 轻导航埋点能力。
///
/// 示例:
/// ```dart
/// TabBar(
/// controller: _tabController,
/// tabs: const [Tab(text: '视频'), Tab(text: '小说')],
/// ).withAnalytics(tabs: [
/// AnalyticsTab('video', '视频'),
/// AnalyticsTab('novel'),
/// ])
/// ```
extension AnalyticsTabBarExtension on TabBar {
/// 切换 Tab 时自动上报 NavigationEvent(轻导航,不更新 currentPageKey)。
AnalyticsTabBarWrapper withAnalytics({required List<AnalyticsTab> tabs}) {
return AnalyticsTabBarWrapper(
tabs: tabs,
child: this,
);
}
}