pushRoute method

void pushRoute(
  1. String pageName,
  2. Map<String, dynamic>? params, {
  3. String? routeAddress,
  4. bool isTransparent = false,
  5. bool isFullDialog = false,
})

记录新的路由导航

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,
  );
}