pub struct BuildCtx<S: AppState> {
pub registry: ActionRegistry<S>,
pub animation_requests: Vec<(WidgetNodeId, AnimationRequest)>,
pub video_nodes: Vec<VideoRegistration>,
pub web_nodes: Vec<WebRegistration>,
pub portals: Vec<PortalEntry>,
/* private fields */
}Expand description
The mutable context passed to Widget::build.
BuildCtx is where widgets register side-effects that must survive beyond
the build phase:
- Action binding –
bindregisters a handler and returns anActionEnvelopethat can be stored in widget fields likeon_press. - Portals –
register_portalplaces a node in the global overlay stack (modals, toasts, flyouts). - Animations –
request_animation_foror theanim_forhelper. - Video / WebView registration –
register_video,register_web_view.
§Example
ⓘ
fn build(&self, ctx: &mut BuildCtx<S>, view: &View<S>) -> Node {
let on_press = ctx.bind(MyAction { .. }, handler as fn(&mut S, MyAction));
Button { on_press: Some(on_press), ..Default::default() }.into_node()
}Fields§
§registry: ActionRegistry<S>The action registry that accumulates handlers during the build phase.
animation_requests: Vec<(WidgetNodeId, AnimationRequest)>Pending animation requests.
video_nodes: Vec<VideoRegistration>Registered video nodes.
web_nodes: Vec<WebRegistration>Registered web view nodes.
portals: Vec<PortalEntry>Portal entries (overlays, modals, toasts).
Implementations§
Source§impl<S: AppState> BuildCtx<S>
impl<S: AppState> BuildCtx<S>
pub fn new() -> Self
pub fn bind<A: Action, H>(&mut self, action: A, handler: H) -> ActionEnvelope
pub fn request_animation_for( &mut self, target: WidgetNodeId, request: AnimationRequest, )
pub fn register_video(&mut self, registration: VideoRegistration)
pub fn register_web_view(&mut self, registration: WebRegistration)
pub fn take_animation_requests( &mut self, ) -> Vec<(WidgetNodeId, AnimationRequest)>
pub fn take_video_registrations(&mut self) -> Vec<VideoRegistration>
pub fn take_web_registrations(&mut self) -> Vec<WebRegistration>
pub fn register_portal(&mut self, node: Node)
pub fn register_portal_with_id(&mut self, id: WidgetNodeId, node: Node)
pub fn register_portal_with_layer( &mut self, layer: PortalLayer, id: Option<WidgetNodeId>, node: Node, )
pub fn take_portals(&mut self) -> Vec<(Option<WidgetNodeId>, Node)>
pub fn anim_for(&mut self, target: WidgetNodeId) -> AnimCtx<'_, S>
pub fn video_controls(&self, target: WidgetNodeId) -> VideoControlCtx
Auto Trait Implementations§
impl<S> Freeze for BuildCtx<S>
impl<S> !RefUnwindSafe for BuildCtx<S>
impl<S> Send for BuildCtx<S>
impl<S> Sync for BuildCtx<S>
impl<S> Unpin for BuildCtx<S>
impl<S> UnsafeUnpin for BuildCtx<S>
impl<S> !UnwindSafe for BuildCtx<S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
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>
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)
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)
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.