pub struct VirtualList<T>where
T: 'static,{
pub selection: RwSignal<Option<usize>>,
/* private fields */
}Fields§
§selection: RwSignal<Option<usize>>Implementations§
Source§impl<T> VirtualList<T>
impl<T> VirtualList<T>
pub fn new<DF, I>(data_fn: DF) -> VirtualList<T>
pub fn with_view<DF, I, V>( data_fn: DF, view_fn: impl Fn(T) -> V + 'static, ) -> VirtualList<T>
pub fn with_key<DF, I, K>( data_fn: DF, key_fn: impl Fn(&T) -> K + 'static, ) -> VirtualList<T>
pub fn full<DF, I, KF, K, VF, V>( data_fn: DF, key_fn: KF, view_fn: VF, ) -> VirtualList<T>
Source§impl<T> VirtualList<T>where
T: 'static,
impl<T> VirtualList<T>where
T: 'static,
pub fn selection(&self) -> RwSignal<Option<usize>>
Sourcepub fn on_select(
self,
on_select: impl Fn(Option<usize>) + 'static,
) -> VirtualList<T>
pub fn on_select( self, on_select: impl Fn(Option<usize>) + 'static, ) -> VirtualList<T>
Sets a callback function to be called whenever the selection changes in the virtual list.
The callback function receives an Option<usize> parameter representing the currently
selected item index. When None, no item is selected. When Some(index), the item
at that index is currently selected.
This is a convenience helper that creates a new effect internally. Calling this method
multiple times will not override previous on_select calls - each call creates a separate
effect that will all be triggered on selection changes. For more control, you can manually
create effects using the selection signal returned by selection().
§Parameters
on_select- A function that takesOption<usize>and will be called on selection changes
§Returns
Returns self to allow method chaining.
§Example
use floem::prelude::*;
virtual_list(
move || 1..=1000000,
|item| *item,
|index, item| format!("{index}: {item}")
)
.on_select(|selection| {
match selection {
Some(index) => println!("Selected item at index: {index}"),
None => println!("No item selected"),
}
});Methods from Deref<Target = VirtualStack<(usize, T)>>§
pub fn scroll_to_idx(&self, index: usize)
Trait Implementations§
Source§impl<T> Deref for VirtualList<T>where
T: 'static,
impl<T> Deref for VirtualList<T>where
T: 'static,
Source§type Target = VirtualStack<(usize, T)>
type Target = VirtualStack<(usize, T)>
Source§fn deref(&self) -> &VirtualStack<(usize, T)>
fn deref(&self) -> &VirtualStack<(usize, T)>
Source§impl<T> DerefMut for VirtualList<T>where
T: 'static,
impl<T> DerefMut for VirtualList<T>where
T: 'static,
Source§fn deref_mut(&mut self) -> &mut VirtualStack<(usize, T)>
fn deref_mut(&mut self) -> &mut VirtualStack<(usize, T)>
Source§impl<T> IntoView for VirtualList<T>where
T: 'static,
impl<T> IntoView for VirtualList<T>where
T: 'static,
Source§type V = VirtualStack<(usize, T)>
type V = VirtualStack<(usize, T)>
Source§type Intermediate = VirtualStack<(usize, T)>
type Intermediate = VirtualStack<(usize, T)>
Source§fn into_intermediate(self) -> <VirtualList<T> as IntoView>::Intermediate
fn into_intermediate(self) -> <VirtualList<T> as IntoView>::Intermediate
Auto Trait Implementations§
impl<T> Freeze for VirtualList<T>
impl<T> !RefUnwindSafe for VirtualList<T>
impl<T> !Send for VirtualList<T>
impl<T> !Sync for VirtualList<T>
impl<T> Unpin for VirtualList<T>
impl<T> UnsafeUnpin for VirtualList<T>
impl<T> !UnwindSafe for VirtualList<T>
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
Source§impl<T> ContainerExt for Twhere
T: IntoView + 'static,
impl<T> ContainerExt for Twhere
T: IntoView + 'static,
Source§impl<T> Decorators for Twhere
T: IntoView,
impl<T> Decorators for Twhere
T: IntoView,
Source§fn style(self, style: impl Fn(Style) -> Style + 'static) -> Self::Intermediate
fn style(self, style: impl Fn(Style) -> Style + 'static) -> Self::Intermediate
Source§fn debug_name(self, name: impl Into<String>) -> Self::Intermediate
fn debug_name(self, name: impl Into<String>) -> Self::Intermediate
Source§fn debug_name_if<S>(
self,
apply: impl Fn() -> bool + 'static,
name: impl Fn() -> S + 'static,
) -> Self::Intermediate
fn debug_name_if<S>( self, apply: impl Fn() -> bool + 'static, name: impl Fn() -> S + 'static, ) -> Self::Intermediate
Source§fn dragging_style(
self,
style: impl Fn(Style) -> Style + 'static,
) -> Self::Intermediate
fn dragging_style( self, style: impl Fn(Style) -> Style + 'static, ) -> Self::Intermediate
Source§fn class<C>(self, _class: C) -> Self::Intermediatewhere
C: StyleClass,
fn class<C>(self, _class: C) -> Self::Intermediatewhere
C: StyleClass,
Source§fn class_if<C>(
self,
apply: impl Fn() -> bool + 'static,
_class: C,
) -> Self::Intermediatewhere
C: StyleClass,
fn class_if<C>(
self,
apply: impl Fn() -> bool + 'static,
_class: C,
) -> Self::Intermediatewhere
C: StyleClass,
Source§fn remove_class<C>(self, _class: C) -> Self::Intermediatewhere
C: StyleClass,
fn remove_class<C>(self, _class: C) -> Self::Intermediatewhere
C: StyleClass,
Set this property using Style::keyboard_navigable instead
Source§fn disable_default_event<L>(
self,
disable: impl Fn() -> (L, bool) + 'static,
) -> Self::Intermediatewhere
L: EventListenerTrait,
fn disable_default_event<L>(
self,
disable: impl Fn() -> (L, bool) + 'static,
) -> Self::Intermediatewhere
L: EventListenerTrait,
Source§fn draggable(self) -> <Self::Intermediate as IntoView>::Intermediate
fn draggable(self) -> <Self::Intermediate as IntoView>::Intermediate
Source§fn draggable_with_config(
self,
config: impl Fn() -> DragConfig + 'static,
) -> <Self::Intermediate as IntoView>::Intermediate
fn draggable_with_config( self, config: impl Fn() -> DragConfig + 'static, ) -> <Self::Intermediate as IntoView>::Intermediate
Source§fn disabled(
self,
disabled_fn: impl Fn() -> bool + 'static,
) -> Self::Intermediate
fn disabled( self, disabled_fn: impl Fn() -> bool + 'static, ) -> Self::Intermediate
use Style::set_disabled directly instead
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
fn on_event_with_config<L>( self, listener: L, config: EventCallbackConfig, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) -> EventPropagation + 'static, ) -> Self::Intermediate
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
fn on_event_cont_with_config<L>( self, listener: L, config: EventCallbackConfig, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) + 'static, ) -> Self::Intermediate
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
fn on_event_stop_with_config<L>( self, listener: L, config: EventCallbackConfig, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) + 'static, ) -> Self::Intermediate
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
fn on_event<L>( self, listener: L, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) -> EventPropagation + 'static, ) -> Self::Intermediate
EventListener.Source§fn on_event_cont<L>(
self,
listener: L,
action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) + 'static,
) -> Self::Intermediate
fn on_event_cont<L>( self, listener: L, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) + 'static, ) -> Self::Intermediate
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
fn on_event_stop<L>( self, listener: L, action: impl FnMut(&mut EventCx<'_>, &<L as EventListenerTrait>::EventData) + 'static, ) -> Self::Intermediate
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
fn on_key_down( self, key: Key, cmp: impl Fn(Modifiers) -> bool + 'static, action: impl FnMut(&mut EventCx<'_>, &KeyboardEvent) + 'static, ) -> Self::Intermediate
Use on_event(listener::KeyDown, ...) instead.
Source§fn on_key_up(
self,
key: Key,
cmp: impl Fn(Modifiers) -> bool + 'static,
action: impl FnMut(&mut EventCx<'_>, &KeyboardEvent) + 'static,
) -> Self::Intermediate
fn on_key_up( self, key: Key, cmp: impl Fn(Modifiers) -> bool + 'static, action: impl FnMut(&mut EventCx<'_>, &KeyboardEvent) + 'static, ) -> Self::Intermediate
Use on_event(listener::KeyUp, ...) instead.
Source§fn on_click(
self,
action: impl FnMut(&mut EventCx<'_>) -> EventPropagation + 'static,
) -> Self::Intermediate
fn on_click( self, action: impl FnMut(&mut EventCx<'_>) -> EventPropagation + 'static, ) -> Self::Intermediate
Use on_event(Click, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.
EventListener::Click.Source§fn on_click_cont(
self,
action: impl FnMut(&mut EventCx<'_>) + 'static,
) -> Self::Intermediate
fn on_click_cont( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate
Use on_event_cont(Click, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.
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
fn on_click_stop( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate
Use on_event_stop(Click, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.
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
fn action(self, action: impl FnMut() + 'static) -> Self::Intermediate
Source§fn on_double_click(
self,
action: impl FnMut(&mut EventCx<'_>) -> EventPropagation + 'static,
) -> Self::Intermediate
fn on_double_click( self, action: impl FnMut(&mut EventCx<'_>) -> EventPropagation + 'static, ) -> Self::Intermediate
Use on_event(DoubleClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.
EventListener::DoubleClickSource§fn on_double_click_cont(
self,
action: impl FnMut(&mut EventCx<'_>) + 'static,
) -> Self::Intermediate
fn on_double_click_cont( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate
Use on_event_cont(DoubleClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.
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
fn on_double_click_stop( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate
Use on_event_stop(DoubleClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.
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
fn on_secondary_click( self, action: impl FnMut(&mut EventCx<'_>) -> EventPropagation + 'static, ) -> Self::Intermediate
Use on_event(SecondaryClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.
EventListener::SecondaryClick. This is most often the “Right” click.Source§fn on_secondary_click_cont(
self,
action: impl FnMut(&mut EventCx<'_>) + 'static,
) -> Self::Intermediate
fn on_secondary_click_cont( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate
Use on_event_cont(SecondaryClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.
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
fn on_secondary_click_stop( self, action: impl FnMut(&mut EventCx<'_>) + 'static, ) -> Self::Intermediate
Use on_event_stop(SecondaryClick, |cx, _event| { ... }) instead. The new API provides direct access to typed event data.
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
fn on_cleanup(self, action: impl Fn() + 'static) -> Self::Intermediate
Source§fn animation(
self,
animation: impl Fn(Animation) -> Animation + 'static,
) -> Self::Intermediate
fn animation( self, animation: impl Fn(Animation) -> Animation + 'static, ) -> Self::Intermediate
Source§fn clear_focus(self, when: impl Fn() + 'static) -> Self::Intermediate
fn clear_focus(self, when: impl Fn() + 'static) -> Self::Intermediate
Source§fn request_focus(self, when: impl Fn() + 'static) -> Self::Intermediate
fn request_focus(self, when: impl Fn() + 'static) -> Self::Intermediate
Source§fn window_scale(
self,
scale_fn: impl Fn() -> f64 + 'static,
) -> Self::Intermediate
fn window_scale( self, scale_fn: impl Fn() -> f64 + 'static, ) -> Self::Intermediate
Source§fn window_title(
self,
title_fn: impl Fn() -> String + 'static,
) -> Self::Intermediate
fn window_title( self, title_fn: impl Fn() -> String + 'static, ) -> Self::Intermediate
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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