pub struct ScreenTransitionView { /* private fields */ }Expand description
Paints the current screen, and — while a ScreenNav-driven transition
is in progress — the previous screen too, each offset by the shared
ScreenTransition’s spring-eased enter/exit values (D108/Phase 26 Step
3). Not generic over the app’s route enum: it only needs already-built
widgets plus opaque u64 identity keys (ScreenNav::current_key/
previous_key/stack_keys) and the transition handle
ScreenNav::transition_handle() returns — the same way ScrollView
needs only a ScrollController, not the app’s own types.
§Per-screen persistence (2026-08-01)
Each screen’s subtree is addressed by its incoming_key/outgoing_key
through PaintCtx::child_keyed, not positionally — see
render_tree.rs’s module doc (“Identity” section) for the full story.
Without this, two different screens landing at the same tree position
(which they always do here — every screen paints as “the incoming
child”) would alias scroll offset, animation state, and everything else
sticky onto whatever screen last occupied that position: navigating to a
new screen could inherit a stale, out-of-bounds scroll offset (visibly
springing back to valid bounds on arrival), and navigating back would
find its OWN position reset instead of where it was left. With keys,
each screen gets its own permanent slot, reused (state intact, exactly
where it was left) whenever that screen becomes current again, and
released via valid_keys/prune_keyed_children only once it’s actually
popped off the nav stack — mirroring Flutter’s Navigator, which keeps
every pushed route’s Element tree alive in its Overlay until popped,
not just the current one.
rsc new’s generated app.rs uses this in place of handing the
current screen’s widget straight to Scaffold::new(...).
Implementations§
Trait Implementations§
Source§impl Widget for ScreenTransitionView
impl Widget for ScreenTransitionView
Source§fn layout(&self, ctx: &LayoutCtx<'_>) -> Size
fn layout(&self, ctx: &LayoutCtx<'_>) -> Size
ctx.constraints and return a size within them. Read more