replaceRoute method
void
replaceRoute(})
替换当前路由
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);
}