replaceRoute method

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

替换当前路由

Implementation

void replaceRoute(String pageName, Map<String, dynamic>? params, {String? routeAddress, bool isTransparent = false, bool isFullDialog = false}) {
  final replacedRoute = _routeStack.isNotEmpty ? _routeStack.last : null;

  // 增强的日志记录
  final enhancedLogData = {
    'action': 'replace',
    'fromPage': replacedRoute?.pageName ?? 'unknown',
    'toPage': pageName,
    'fromRouteAddress': replacedRoute?.routeAddress ?? 'unknown',
    'toRouteAddress': routeAddress ?? _generateRouteAddress(pageName, params),
    'replacedParams': replacedRoute?.params,
    'newParams': params,
    'isTransparent': isTransparent,
    'isFullDialog': isFullDialog,
    'stackDepth': _routeStack.length,
    'totalNavigations': _totalNavigations,
    'timestamp': DateTime.now().millisecondsSinceEpoch,
    'sessionId': 'session_${DateTime.now().millisecondsSinceEpoch}',
    'replacedStayDuration': replacedRoute != null ? DateTime.now().difference(replacedRoute.timestamp).inMilliseconds : null,
  };

  if (_routeStack.isNotEmpty) {
    _routeStack.removeLast();
  }

  debugPrint('jiangmiao navigation routechange replace详细信息: $enhancedLogData');

  // 使用NavigationLogger记录
  NavigationLogger.instance.logStackOperation(
    action: 'replace',
    fromPage: replacedRoute?.pageName,
    toPage: pageName,
    metadata: enhancedLogData,
  );

  pushRoute(pageName, params, routeAddress: routeAddress, isTransparent: isTransparent, isFullDialog: isFullDialog);
}