@@ -462,6 +462,7 @@ class InspectorController extends DisposableController
462462 }
463463 if ((_receivedFlutterNavigationEvent || _receivedIsolateReloadEvent) &&
464464 extensionEventKind == 'Flutter.Frame' ) {
465+ _refreshingAfterNavigationEvent = _receivedFlutterNavigationEvent;
465466 _receivedFlutterNavigationEvent = false ;
466467 _receivedIsolateReloadEvent = false ;
467468 await refreshInspector ();
@@ -519,6 +520,8 @@ class InspectorController extends DisposableController
519520 }
520521 }
521522
523+ var _refreshingAfterNavigationEvent = false ;
524+
522525 RemoteDiagnosticsNode ? _determineNewSelection (
523526 RemoteDiagnosticsNode ? previousSelection,
524527 ) {
@@ -536,6 +539,17 @@ class InspectorController extends DisposableController
536539 ) = _findClosestUnchangedAncestor (previousSelection);
537540 if (closestUnchangedAncestor == null ) return inspectorTree.root? .diagnostic;
538541
542+ // TODO(elliette): This might cause a race event that will set this to false
543+ // for a subsequent navigate event. Consider passing the value of
544+ // _refreshingAfterNavigationEvent through the method chain from where the
545+ // navigation event is detected. This would require updating the interface
546+ // of InspectorServiceClient.onForceRefresh, or refactoring to avoid doing
547+ // so.
548+ if (_refreshingAfterNavigationEvent) {
549+ _refreshingAfterNavigationEvent = false ;
550+ return closestUnchangedAncestor;
551+ }
552+
539553 const distanceOffset = 3 ;
540554 final matchingDescendant = _findMatchingDescendant (
541555 of: closestUnchangedAncestor,
0 commit comments