Skip to content

Commit ba8a14f

Browse files
authored
[Inspector V2] Change selected node heuristic after navigation event triggering a tree refresh (flutter#8645)
1 parent a6a8f23 commit ba8a14f

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

packages/devtools_app/lib/src/screens/inspector_v2/inspector_controller.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)