Skip to main content

PushOptions

Struct PushOptions 

Source
pub struct PushOptions<State>
where State: 'static,
{ /* private fields */ }
Expand description

Options for NavigatorController::push_with_options, carrying a pushed page’s opacity, back-press BackPolicy, optional per-op transition override, optional result callback, and (for a DismissAnimated overlay) the shared dismiss-signal cell the navigator bumps on a back request.

Construct with opaque/transparent, then chain the builder setters. The existing push* methods are unchanged — they push with BackPolicy::Pop and no dismiss signal.

Implementations§

Source§

impl<State> PushOptions<State>
where State: 'static,

Source

pub fn opaque() -> PushOptions<State>

Options for an opaque page (the page below is culled while covered). Defaults: BackPolicy::Pop, navigator-default transition, no result callback, no dismiss signal.

Source

pub fn transparent() -> PushOptions<State>

Options for a transparent page (e.g. a dialog/sheet/palette overlay — the page below stays visible). Same defaults as opaque otherwise.

Source

pub fn back(self, policy: BackPolicy) -> PushOptions<State>

Set the page’s back-press BackPolicy (default BackPolicy::Pop).

Source

pub fn transition(self, spec: TransitionSpec) -> PushOptions<State>

Override the navigator’s default transition for this push only.

Source

pub fn on_result( self, callback: impl Fn(&mut State, PopResult) + 'static, ) -> PushOptions<State>

Register a result callback invoked with &mut State when this page is later popped (carrying the pop’s PopResult) — the same delivery the push_for_result path uses.

Source

pub fn dismiss_signal(self, signal: Rc<Cell<u64>>) -> PushOptions<State>

Supply the shared generation cell the navigator increments when a DismissAnimated back press routes to this page (see BackPolicy’s observation seam). Ignored for the other policies.

Source

pub fn on_visibility( self, f: impl Fn(PageVisibility) + 'static, ) -> PushOptions<State>

Observe this page’s PageVisibility: fired once at push (with Current) and on every subsequent change, never twice with the same value. This is the seam a screen pauses/resumes polling, a timer, or a camera session from.

§Why it is a callback, not a published cell

A covered page is neither painted nor (under NavigatorView::cull_covered_builds) rebuilt, so it has no pass in which to poll anything. The seam therefore has to push. It is shaped exactly like on_result/ dismiss_signal: a plain Rc<dyn Fn> slot, no signal — frust-widgets is reactive-free.

§No &mut State

The callback receives no &mut State, unlike on_result. It fires from a rebuild (a BuildCtx), which carries no erased app state, and it fires synchronously there: nothing is queued, so a covered page learns it is covered on the frame it happens. Capture what you need (a signal, an Rc<Cell<_>>, a controller handle) in the closure instead.

(on_result does defer — it needs &mut State — but it is no longer waiting on user input to be delivered: the rebuild that queues it also dispatches the InputEvent::Housekeeping broadcast that flushes it, so both seams now land on the same frame. See the module docs.)

§“No cleanup on cover” is the contract, not a bug

A covering push does not fire the page’s on_cleanup and must never start to: the page stays mounted so its widget state survives the cover (the retained-page-state guarantee the whole navigator rests on — see the module docs’ paint-culling section). This seam exists precisely so a page can release its own resources on Covered and re-acquire them on Current, without the navigator disposing anything.

Calling back into the NavigatorController from here is safe: a push/pop only records an op, drained at the next rebuild.

Source

pub fn route(self, location: Location) -> PushOptions<State>

Stamp this page’s route identity (R-B1): the Location it was pushed with, published on the navigator’s RouteStack and never derived from depth. Omit for a page pushed as a bare builder (an overlay/dialog) — it then publishes a None entry, which RouteStack::current_route skips.

Source

pub fn pop_swipe(self, enabled: bool) -> PushOptions<State>

Override this page’s edge-swipe eligibility, ranked above every other gesture-policy slot: page → navigator explicit (NavigatorView::pop_swipe) → platform (NavigatorView::platform_pop_swipe) → preset-derived default. Still subject to BackPolicy: a DismissAnimated or Veto page never arms the gesture regardless of this override (see NavigatorWidget::swipe_armable).

Auto Trait Implementations§

§

impl<State> !RefUnwindSafe for PushOptions<State>

§

impl<State> !Send for PushOptions<State>

§

impl<State> !Sync for PushOptions<State>

§

impl<State> !UnwindSafe for PushOptions<State>

§

impl<State> Freeze for PushOptions<State>

§

impl<State> Unpin for PushOptions<State>

§

impl<State> UnsafeUnpin for PushOptions<State>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T> StorageAccess<T> for T

Source§

fn as_borrowed(&self) -> &T

Borrows the value.
Source§

fn into_taken(self) -> T

Takes the value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more