Skip to main content

List

Struct List 

Source
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>

Source

pub fn new(items: impl IntoIterator<Item = ListItem>) -> Self

A list of items.

Source

pub fn shared(items: Arc<[ListItem]>) -> Self

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.

Source

pub fn scrollbar(self, style: ScrollbarStyle) -> Self

Draws the scrollbar in style whatever the theme chooses.

Source

pub fn selected(self, index: Option<usize>) -> Self

The selected row index.

Source

pub fn checked(self, checked: Vec<bool>) -> Self

Turns the list into a multi-select list; checked[i] tells whether row i is checked.

Source

pub fn empty_text(self, text: impl Into<String>) -> Self

Text shown when there are no items.

Source

pub fn on_select(self, message: impl Fn(usize) -> Msg + 'static) -> Self

Message for moving the selection to a row.

Source

pub fn on_activate(self, message: impl Fn(usize) -> Msg + 'static) -> Self

Message for opening a row (Enter, click).

Source

pub fn on_toggle(self, message: impl Fn(usize) -> Msg + 'static) -> Self

Message for checking or unchecking a row in a multi-select list (Space, click on the mark).

Trait Implementations§

Source§

impl<Msg: 'static> Widget<Msg> for List<Msg>

Source§

fn measure(&self, _cx: &mut MeasureCx<'_>, available: Size) -> Size

The size the widget wants when it may use up to available.
Source§

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

Draws the widget into area.
Source§

fn event(&self, cx: &mut EventCx<'_, Msg>, event: &Event) -> bool

Handles input. Returns true when the event was used; unused key and scroll events bubble to the parent widget.
Source§

fn focusable(&self) -> bool

Whether the widget can take keyboard focus.
Source§

fn paint_overlay(&self, _cx: &mut PaintCx<'_>, _anchor: Rect)

Draws the widget’s overlay after the whole view was painted, when it asked for one with PaintCx::request_overlay. anchor is the area the widget was painted in.
Source§

fn children(&self) -> &[Node<Msg>]

Child nodes, for widgets that contain other widgets.
Source§

fn children_mut(&mut self) -> &mut [Node<Msg>]

Mutable child nodes, used to assign ids.

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>
where Option<Box<dyn Fn(usize) -> Msg>>: Freeze,

§

impl<Msg> Unpin for List<Msg>
where Option<Box<dyn Fn(usize) -> Msg>>: Unpin,

§

impl<Msg> UnsafeUnpin for List<Msg>
where Option<Box<dyn Fn(usize) -> Msg>>: UnsafeUnpin,

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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