pushRoute method
void
pushRoute(})
记录新的路由导航
Implementation
void pushRoute(String pageName, Map<String, dynamic>? params, {String? routeAddress, bool isTransparent = false, bool isFullDialog = false}) {
final previousRoute = _currentRoute;
final routeInfo = RouteInfo(
pageName: pageName,
routeAddress: routeAddress ?? _generateRouteAddress(pageName, params),
params: Map<String, dynamic>.from(params ?? {}),
timestamp: DateTime.now(),
isTransparent: isTransparent,
isFullDialog: isFullDialog,
navigationId: _generateNavigationId(),
stackDepth: _routeStack.length,
);
_routeStack.add(routeInfo);
_currentRoute = routeInfo;
_totalNavigations++;
_pageVisitCount[pageName] = (_pageVisitCount[pageName] ?? 0) + 1;
// 增强的日志记录
final enhancedLogData = {
'action': 'push',
'fromPage': previousRoute?.pageName ?? 'unknown',
'toPage': pageName,
'fromRouteAddress': previousRoute?.routeAddress ?? 'unknown',
'toRouteAddress': routeInfo.routeAddress,
'params': params,
'isTransparent': isTransparent,
'isFullDialog': isFullDialog,
'navigationId': routeInfo.navigationId,
'stackDepth': _routeStack.length,
'totalNavigations': _totalNavigations,
'pageVisitCount': _pageVisitCount[pageName],
'timestamp': routeInfo.timestamp.millisecondsSinceEpoch,
'sessionId': 'session_${DateTime.now().millisecondsSinceEpoch}',
'previousStayDuration': previousRoute != null ? DateTime.now().difference(previousRoute.timestamp).inMilliseconds : null,
};
_notifyListeners(_currentRoute, previousRoute);
debugPrint('jiangmiao navigation routechange push详细信息: $enhancedLogData');
// 使用NavigationLogger记录
NavigationLogger.instance.logStackOperation(
action: 'push',
fromPage: previousRoute?.pageName,
toPage: pageName,
metadata: enhancedLogData,
);
}