Problem
Parent: #723
Native trees wrap sections in QueryaAnimatedExpand → AnimatedSize (connection expand, Databases, schemas, object groups). During the animation Flutter re-layouts the growing child every frame.
SDUI explicitly avoids height morph on the flat list because it fights itemExtent and costs FPS.
_PgTreeRow also uses AnimatedContainer for selection fill on every row.
Proposal
- When Motion is Off / OS reduce-motion: snap expand (already mostly via duration tokens) — verify zero
AnimatedSize ticks.
- When expanding a node with child count above a threshold (e.g. > 24), skip height morph (instant show) even on Full motion — same spirit as SDUI.
- Optional: selection highlight without
AnimatedContainer when Reduced/Off or when using flattened list.
- Keep chevron rotation (cheap) for feedback.
Acceptance
Files
lib/core/motion/querya_animated_expand.dart
connections_panel_* expand sites
_PgTreeRow / SDUI row decoration
Problem
Parent: #723
Native trees wrap sections in
QueryaAnimatedExpand→AnimatedSize(connection expand, Databases, schemas, object groups). During the animation Flutter re-layouts the growing child every frame.SDUI explicitly avoids height morph on the flat list because it fights
itemExtentand costs FPS._PgTreeRowalso usesAnimatedContainerfor selection fill on every row.Proposal
AnimatedSizeticks.AnimatedContainerwhen Reduced/Off or when using flattened list.Acceptance
Files
lib/core/motion/querya_animated_expand.dartconnections_panel_*expand sites_PgTreeRow/ SDUI row decoration