Skip to main content

Stack

Struct Stack 

Source
pub struct Stack { /* private fields */ }
Expand description

A collection of static views. See stack and stack_from_iter.

The children of a stack can still get reactive updates.

Implementations§

Source§

impl Stack

Source

pub fn new(children: impl IntoViewIter) -> Stack

Creates a new stack from any type that implements IntoViewIter.

This accepts arrays, tuples, vectors, slices, and iterators of views.

§Example
use floem::views::*;

// From array
Stack::new([text("child 1"), text("child 2")]);

// From tuple (heterogeneous types)
Stack::new((text("label"), button("click")));

// From vec
Stack::new(vec![text("a"), text("b"), text("c")]);

// From iterator
Stack::new((0..5).map(|i| text(i)).collect::<Vec<_>>());
Source

pub fn with_id(id: ViewId, children: impl IntoViewIter) -> Stack

Creates a new stack with a specific ViewId from a tuple of views.

This is useful for lazy view construction where the ViewId is created before the view itself.

§Example
use floem::{ViewId, views::Stack};

let id = ViewId::new();
Stack::with_id(id, ("child 1", "child 2"));
Source

pub fn from_iter<V>(children: impl IntoIterator<Item = V>) -> Stack
where V: IntoView + 'static,

Creates a new stack from an iterator of views.

§Example
use floem::views::*;

Stack::from_iter((0..5).map(|i| text(i)));
Source

pub fn from_iter_with_id<V>( id: ViewId, children: impl IntoIterator<Item = V>, direction: Option<FlexDirection>, ) -> Stack
where V: IntoView + 'static,

Creates a new stack with a specific ViewId from an iterator of views.

This is useful for lazy view construction where the ViewId is created before the view itself. Unlike with_id, this method pre-converts all views before setting children, avoiding potential RefCell borrow conflicts.

§Example
use floem::{ViewId, views::*};

let id = ViewId::new();
Stack::from_iter_with_id(id, (0..5).map(|i| text(i)), None);
Source

pub fn horizontal(children: impl IntoViewIter) -> Stack

Creates a new horizontal stack (row direction).

§Example
use floem::views::*;

Stack::horizontal((text("left"), text("right")));
Source

pub fn vertical(children: impl IntoViewIter) -> Stack

Creates a new vertical stack (column direction).

§Example
use floem::views::*;

Stack::vertical((text("top"), text("bottom")));
Source

pub fn horizontal_from_iter<V>(children: impl IntoIterator<Item = V>) -> Stack
where V: IntoView + 'static,

Creates a new horizontal stack from an iterator of views.

§Example
use floem::views::*;

Stack::horizontal_from_iter((0..5).map(|i| text(i)));
Source

pub fn vertical_from_iter<V>(children: impl IntoIterator<Item = V>) -> Stack
where V: IntoView + 'static,

Creates a new vertical stack from an iterator of views.

§Example
use floem::views::*;

Stack::vertical_from_iter((0..5).map(|i| text(i)));
Source

pub fn add_class_by_idx(self, class: impl Fn(usize) -> StyleClassRef) -> Stack

Trait Implementations§

Source§

impl View for Stack

Source§

fn id(&self) -> ViewId

Source§

fn view_style(&self) -> Option<Style>

Source§

fn debug_name(&self) -> Cow<'static, str>

Source§

fn update(&mut self, _cx: &mut UpdateCx<'_>, state: Box<dyn Any>)

Use this method to react to changes in view-related state. You will usually send state to this hook manually using the View’s Id handle Read more
Source§

fn view_class(&self) -> Option<StyleClassRef>

Source§

fn style_pass(&mut self, cx: &mut StyleCx<'_>)

Use this method to style the view’s children. Read more
Source§

fn event_capture(&mut self, _cx: &mut EventCx<'_>) -> EventPropagation

Handles an event during the capture phase of event propagation. Read more
Source§

fn event(&mut self, _cx: &mut EventCx<'_>) -> EventPropagation

Handles an event during the target and bubble phases of event propagation. Read more
Source§

fn paint(&mut self, cx: &mut PaintCx<'_>)

View-specific implementation. Called during paint traversal for this view. Children are painted automatically by Floem. Views should only paint their own content (backgrounds, borders, custom drawing).
Source§

fn post_paint(&mut self, cx: &mut PaintCx<'_>)

Auto Trait Implementations§

§

impl Freeze for Stack

§

impl RefUnwindSafe for Stack

§

impl !Send for Stack

§

impl !Sync for Stack

§

impl Unpin for Stack

§

impl UnsafeUnpin for Stack

§

impl UnwindSafe for Stack

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<T> ButtonExt for T
where T: IntoView + 'static,

Source§

fn button(self) -> Button

Create a Button from the parent.
Source§

impl<T> ClipExt for T
where T: IntoView + 'static,

Source§

fn clip(self) -> Clip

Wrap the view in a clip view.
Source§

impl<T> ContainerExt for T
where T: IntoView + 'static,

Source§

fn container(self) -> Container

Wrap the view in a container.
Source§

impl<T> Decorators for T
where T: IntoView,

Source§

fn style(self, style: impl Fn(Style) -> Style + 'static) -> Self::Intermediate

Alter the style of the view. Read more
Source§

fn debug_name(self, name: impl Into<String>) -> Self::Intermediate

Add a debug name to the view that will be shown in the inspector. Read more
Source§

fn debug_name_if<S>( self, apply: impl Fn() -> bool + 'static, name: impl Fn() -> S + 'static, ) -> Self::Intermediate
where S: Into<String>,

Conditionally add a debug name to the view that will be shown in the inspector. Read more
Source§

fn dragging_style( self, style: impl Fn(Style) -> Style + 'static, ) -> Self::Intermediate

The visual style to apply when the view is being dragged
Source§

fn class<C>(self, _class: C) -> Self::Intermediate
where C: StyleClass,

Add a style class to the view
Source§

fn class_if<C>( self, apply: impl Fn() -> bool + 'static, _class: C, ) -> Self::Intermediate
where C: StyleClass,

Conditionally add a style class to the view
Source§

fn remove_class<C>(self, _class: C) -> Self::Intermediate
where C: StyleClass,

Remove a style class from the view
Source§

fn keyboard_navigable(self) -> Self::Intermediate

👎Deprecated:

Set this property using Style::keyboard_navigable instead

Allows the element to be navigated to with the keyboard. Similar to setting tabindex=“0” in html.
Source§

fn disable_default_event<L>( self, disable: impl Fn() -> (L, bool) + 'static, ) -> Self::Intermediate

Dynamically controls whether the default view behavior for an event should be disabled. When disable is true, children will still see the event, but the view event function will not be called nor the event listeners on the view. Read more
Source§

fn draggable(self) -> <Self::Intermediate as IntoView>::Intermediate

Mark the current view as draggable with default configuration. Read more
Source§

fn draggable_with_config( self, config: impl Fn() -> DragConfig + 'static, ) -> <Self::Intermediate as IntoView>::Intermediate

Mark the current view as draggable with custom configuration. Read more
Source§

fn disabled( self, disabled_fn: impl Fn() -> bool + 'static, ) -> Self::Intermediate

👎Deprecated:

use Style::set_disabled directly instead

Mark the view as disabled Read more
Source§

fn on_event_with_config<L>( self, listener: L, config: EventCallbackConfig, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) -> EventPropagation + 'static, ) -> Self::Intermediate

Add an event handler for the given EventListener with custom phase configuration.
Source§

fn on_event_cont_with_config<L>( self, listener: L, config: EventCallbackConfig, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) + 'static, ) -> Self::Intermediate

Add an event handler for the given EventListener. This event will be handled with the given handler and the event will continue propagating.
Source§

fn on_event_stop_with_config<L>( self, listener: L, config: EventCallbackConfig, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) + 'static, ) -> Self::Intermediate

Add an event handler for the given EventListener. This event will be handled with the given handler and the event will stop propagating.
Source§

fn on_event<L>( self, listener: L, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) -> EventPropagation + 'static, ) -> Self::Intermediate

Add an event handler for the given EventListener.
Source§

fn on_event_cont<L>( self, listener: L, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) + 'static, ) -> Self::Intermediate

Add an event handler for the given EventListener. This event will be handled with the given handler and the event will continue propagating.
Source§

fn on_event_stop<L>( self, listener: L, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) + 'static, ) -> Self::Intermediate

Add an event handler for the given EventListener. This event will be handled with the given handler and the event will stop propagating.
Source§

fn on_key_down( self, key: Key, cmp: impl Fn(Modifiers) -> bool + 'static, action: impl FnMut(&mut EventCx<'_>, &KeyboardEvent) + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event(listener::KeyDown, ...) instead.

Add a handler for pressing down a specific key.
Source§

fn on_key_up( self, key: Key, cmp: impl Fn(Modifiers) -> bool + 'static, action: impl FnMut(&mut EventCx<'_>, &KeyboardEvent) + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event(listener::KeyUp, ...) instead.

Add a handler for a specific key being released.
Source§

fn on_click( self, action: impl FnMut(&mut EventCx<'_>) -> EventPropagation + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event(Click, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.

Add an event handler for EventListener::Click.
Source§

fn on_click_cont( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event_cont(Click, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.

Add an event handler for EventListener::Click. This event will be handled with the given handler and the event will continue propagating.
Source§

fn on_click_stop( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event_stop(Click, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.

Add an event handler for EventListener::Click. This event will be handled with the given handler and the event will stop propagating.
Source§

fn action(self, action: impl FnMut() + 'static) -> Self::Intermediate

Attach action executed on button click or Enter or Space Key.
Source§

fn on_double_click( self, action: impl FnMut(&mut EventCx<'_>) -> EventPropagation + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event(DoubleClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.

Add an event handler for EventListener::DoubleClick
Source§

fn on_double_click_cont( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event_cont(DoubleClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.

Add an event handler for EventListener::DoubleClick. This event will be handled with the given handler and the event will continue propagating.
Source§

fn on_double_click_stop( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event_stop(DoubleClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.

Add an event handler for EventListener::DoubleClick. This event will be handled with the given handler and the event will stop propagating.
Source§

fn on_secondary_click( self, action: impl FnMut(&mut EventCx<'_>) -> EventPropagation + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event(SecondaryClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.

Add an event handler for EventListener::SecondaryClick. This is most often the “Right” click.
Source§

fn on_secondary_click_cont( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event_cont(SecondaryClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.

Add an event handler for EventListener::SecondaryClick. This is most often the “Right” click. This event will be handled with the given handler and the event will continue propagating.
Source§

fn on_secondary_click_stop( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate

👎Deprecated:

Use on_event_stop(SecondaryClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.

Add an event handler for EventListener::SecondaryClick. This is most often the “Right” click. This event will be handled with the given handler and the event will stop propagating.
Source§

fn on_cleanup(self, action: impl Fn() + 'static) -> Self::Intermediate

Adds an event handler for cleanup events for this view. Read more
Source§

fn animation( self, animation: impl Fn(Animation) -> Animation + 'static, ) -> Self::Intermediate

Add an animation to the view. Read more
Source§

fn clear_focus(self, when: impl Fn() + 'static) -> Self::Intermediate

Clear the focus from the window. Read more
Source§

fn request_focus(self, when: impl Fn() + 'static) -> Self::Intermediate

Request that this view gets the focus for the window. Read more
Source§

fn window_scale( self, scale_fn: impl Fn() -> f64 + 'static, ) -> Self::Intermediate

Set the window scale factor. Read more
Source§

fn window_title( self, title_fn: impl Fn() -> String + 'static, ) -> Self::Intermediate

Set the window title. Read more
Source§

fn window_menu( self, menu_fn: impl Fn() -> MenuBuilder<Menu> + 'static, ) -> Self::Intermediate

Set the system window menu Read more
Source§

fn context_menu( self, menu: impl Fn() -> MenuBuilder<Menu> + 'static, ) -> Self::Intermediate

Adds a secondary-click context menu to the view, which opens at the mouse position. Read more
Source§

fn popout_menu( self, menu: impl Fn() -> MenuBuilder<Menu> + 'static, ) -> Self::Intermediate

Adds a primary-click context menu, which opens below the view. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: 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.
§

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.
§

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.
§

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<V> HasViewId for V
where V: View,

Source§

fn view_id(&self) -> ViewId

Returns the ViewId associated with this value.
§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<VW> IntoView for VW
where VW: View + 'static,

Source§

type V = VW

The final View type this converts to.
Source§

type Intermediate = VW

Intermediate type that has a ViewId before full view construction. Read more
Source§

fn into_intermediate(self) -> <VW as IntoView>::Intermediate

Converts to the intermediate form which has a ViewId. Read more
Source§

fn into_view(self) -> <VW as IntoView>::V

Converts the value into a View.
Source§

fn into_any(self) -> Box<dyn View>

Converts the value into a AnyView.
Source§

impl<T> OverlayExt for T
where T: IntoView + 'static,

Source§

fn overlay(self) -> Overlay

Wrap the view in an overlay.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ScrollExt for T
where T: IntoView + 'static,

Source§

fn scroll(self) -> Scroll

Wrap the view in a scroll view.
Source§

impl<T> TooltipExt for T
where T: IntoView + 'static,

Source§

fn tooltip<V>(self, tip: impl Fn() -> V + 'static) -> Tooltip
where V: IntoView + 'static,

Adds a tooltip to the view. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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