popRoute method
记录路由返回
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,
);
}