- AnalyticsRouteObserver:didPush/didReplace/didPop 集中捕获,页面零侵入 - AnalyticsPageName 枚举:pageName 编译期锁死(字典 v2 九个初始值 + 客户端现存 create/pet_archive/services/post_detail),字典外路由不上报 - PageViewTracker:page_viewed 单一上报出口,维护 referrer 链(栈底/冷启动首页为 null)与去重(Tab 重复点选) - 三类非路由曝光手动补点:主壳 Tab 切换(IndexedStack)、认证状态机切页(AnimatedSwitcher)、回栈到无名根路由(resolveRootPage) - 既有 Navigator.push 挂 RouteSettings.name:login_page(register)、main_shell_page(post_detail);fade_route 签名扩展可选 settings - M2 健康档案页面(pet_list/pet_detail/pet_form/record_form/record_detail)先留枚举定义,待功能落地接线 测试新增 8 例(analytics_route_observer_test):push 上报/push 两页 referrer 链正确 + pop 补报/根路由 resolveRootPage 补报/枚举外不报/dialog 不报/Tab 去重/referrer 连贯/reportTab。 验收对照(06 号报告 §5.2 六条):1✓ observer 注册、2✓ pageName 枚举含 pet_form、3✓ referrer 链、4✓ 字典外不报、5✓ 单测 push/pop/referrer、6✓ M1 存量四页接全。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// 统一页面切换:300ms 淡入淡出(12 号组装稿 §7 流程约束)。
|
||||
Route<T> fadePageRoute<T>(Widget page) {
|
||||
///
|
||||
/// [settings] 从 M2 起必传路由名(page_viewed 取数来源,03 号评估 §2.1),
|
||||
/// 名字用 `AnalyticsPageName` 枚举的 pageName 值。
|
||||
Route<T> fadePageRoute<T>(Widget page, {RouteSettings? settings}) {
|
||||
return PageRouteBuilder<T>(
|
||||
settings: settings,
|
||||
transitionDuration: const Duration(milliseconds: 300),
|
||||
reverseTransitionDuration: const Duration(milliseconds: 300),
|
||||
pageBuilder: (context, animation, secondaryAnimation) => page,
|
||||
|
||||
Reference in New Issue
Block a user