pub struct List<Msg> { /* private fields */ }Expand description
A vertical list that only draws the rows it shows, so it stays fast with any number of items.
For a very long list, keep the items as an Arc<[ListItem]> in your state and pass it to
List::shared, so they are not built again every frame.
The application owns the selection and the checked rows; the list reports changes through messages. Hovered and selected rows raise their surface, show the accent pillar and slide their icon and label one cell right. The pillar, the check mark of a multi-select list and the detail column never move, so a mark is always where the pointer left it.
Keys while focused: ↑/↓ or k/j move, Home/End and PgUp/PgDn jump, Enter activates, Space
toggles in multi-select lists and activates otherwise. A click on a row selects and activates
it; in a multi-select list a click on the check mark (or the cell after it) only toggles.
Style keys: list-item with hover, selected, focus, pressed; list-item.faint,
list-header, list-detail, scrollbar.
Implementations§
Source§impl<Msg: 'static> List<Msg>
impl<Msg: 'static> List<Msg>
Sourcepub fn new(items: impl IntoIterator<Item = ListItem>) -> Self
pub fn new(items: impl IntoIterator<Item = ListItem>) -> Self
A list of items.
A list of items kept by the application, e.g. in its state: building the list in view
only clones the Arc, however many items there are.
Sourcepub fn scrollbar(self, style: ScrollbarStyle) -> Self
pub fn scrollbar(self, style: ScrollbarStyle) -> Self
Draws the scrollbar in style whatever the theme chooses.
Sourcepub fn checked(self, checked: Vec<bool>) -> Self
pub fn checked(self, checked: Vec<bool>) -> Self
Turns the list into a multi-select list; checked[i] tells whether row i is checked.
Sourcepub fn empty_text(self, text: impl Into<String>) -> Self
pub fn empty_text(self, text: impl Into<String>) -> Self
Text shown when there are no items.
Sourcepub fn on_select(self, message: impl Fn(usize) -> Msg + 'static) -> Self
pub fn on_select(self, message: impl Fn(usize) -> Msg + 'static) -> Self
Message for moving the selection to a row.
Sourcepub fn on_activate(self, message: impl Fn(usize) -> Msg + 'static) -> Self
pub fn on_activate(self, message: impl Fn(usize) -> Msg + 'static) -> Self
Message for opening a row (Enter, click).
Trait Implementations§
Source§impl<Msg: 'static> Widget<Msg> for List<Msg>
impl<Msg: 'static> Widget<Msg> for List<Msg>
Source§fn measure(&self, _cx: &mut MeasureCx<'_>, available: Size) -> Size
fn measure(&self, _cx: &mut MeasureCx<'_>, available: Size) -> Size
available.Source§fn event(&self, cx: &mut EventCx<'_, Msg>, event: &Event) -> bool
fn event(&self, cx: &mut EventCx<'_, Msg>, event: &Event) -> bool
true when the event was used; unused key and scroll events
bubble to the parent widget.Source§fn paint_overlay(&self, _cx: &mut PaintCx<'_>, _anchor: Rect)
fn paint_overlay(&self, _cx: &mut PaintCx<'_>, _anchor: Rect)
PaintCx::request_overlay. anchor is the area the widget was painted in.Source§fn children_mut(&mut self) -> &mut [Node<Msg>]
fn children_mut(&mut self) -> &mut [Node<Msg>]
Auto Trait Implementations§
impl<Msg> !RefUnwindSafe for List<Msg>
impl<Msg> !Send for List<Msg>
impl<Msg> !Sync for List<Msg>
impl<Msg> !UnwindSafe for List<Msg>
impl<Msg> Freeze for List<Msg>
impl<Msg> Unpin for List<Msg>
impl<Msg> UnsafeUnpin for List<Msg>
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> 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