Problem
Parent: #723
_ConnectionsTreeSelectionScope is an InheritedWidget. Any leaf that calls of(context) rebuilds when any selection field changes (updateShouldNotify compares all driver selections).
With several connections expanded, selecting one table can rebuild large parts of the sidebar tree.
Combined with AnimatedContainer selection chrome on _PgTreeRow / SDUI rows, that becomes paint+layout work on many rows for one click.
Proposal
- Prefer a
ValueListenable / ListenableBuilder (or selector) so only the previous and newly selected rows rebuild.
- Or split scopes per connection id so cross-driver noise does not fan out.
- Consider
DecoratedBox + instant style when Motion Off/Reduced instead of animating every selection.
Acceptance
Files
lib/features/connections/connections_panel.dart (_ConnectionsTreeSelectionScope)
_PgTreeRow consumers / SDUI isNodeSelected
Problem
Parent: #723
_ConnectionsTreeSelectionScopeis anInheritedWidget. Any leaf that callsof(context)rebuilds when any selection field changes (updateShouldNotifycompares all driver selections).With several connections expanded, selecting one table can rebuild large parts of the sidebar tree.
Combined with
AnimatedContainerselection chrome on_PgTreeRow/ SDUI rows, that becomes paint+layout work on many rows for one click.Proposal
ValueListenable/ListenableBuilder(or selector) so only the previous and newly selected rows rebuild.DecoratedBox+ instant style when Motion Off/Reduced instead of animating every selection.Acceptance
Files
lib/features/connections/connections_panel.dart(_ConnectionsTreeSelectionScope)_PgTreeRowconsumers / SDUIisNodeSelected