popRoute method

void popRoute({
  1. bool isSystemBack = false,
})

记录路由返回

Implementation

void popRoute({bool isSystemBack = false}) {
  if (_routeStack.isEmpty) return;
  final previousRoute = _currentRoute;
  final poppedRoute = _routeStack.removeLast();
  _currentRoute = _routeStack.isNotEmpty ? _routeStack.last : null;
  if (isSystemBack) {
    _systemBackNavigations++;
    poppedRoute.isSystemBack = true;
  }
  final stayDuration = DateTime.now().difference(poppedRoute.timestamp);
  poppedRoute.stayDuration = stayDuration;

  // 增强的日志记录
  final enhancedLogData = {
    'action': 'pop',
    'fromPage': poppedRoute.pageName,
    'toPage': _currentRoute?.pageName ?? 'unknown',
    'fromRouteAddress': poppedRoute.routeAddress,
    'toRouteAddress': _currentRoute?.routeAddress ?? 'unknown',
    'poppedParams': poppedRoute.params,
    'isSystemBack': isSystemBack,
    'isTransparent': poppedRoute.isTransparent,
    'isFullDialog': poppedRoute.isFullDialog,
    'navigationId': poppedRoute.navigationId,
    'stackDepth': _routeStack.length,
    'totalNavigations': _totalNavigations,
    'systemBackNavigations': _systemBackNavigations,
    'stayDurationMs': stayDuration.inMilliseconds,
    'timestamp': DateTime.now().millisecondsSinceEpoch,
    'sessionId': 'session_${DateTime.now().millisecondsSinceEpoch}',
    'remainingStackPages': _routeStack.map((r) => r.pageName).toList(),
  };

  _notifyListeners(_currentRoute, previousRoute);
  debugPrint('jiangmiao navigation routechange pop详细信息: $enhancedLogData');

  // 使用NavigationLogger记录
  NavigationLogger.instance.logStackOperation(
    action: 'pop',
    fromPage: poppedRoute.pageName,
    toPage: _currentRoute?.pageName,
    metadata: enhancedLogData,
  );
}