Skip to main content

Widget

Trait Widget 

Source
pub trait Widget<Msg = Callback> {
Show 174 methods // Required methods fn style(&self) -> Style; fn children(&self) -> &[Box<dyn Widget<Msg>>]; fn paint( &self, bounds: Rect, status: Status, theme: &Theme, scene: &mut Scene, ); fn on_click(&self) -> Option<Msg>; // Provided methods fn opaque(&self) -> bool { ... } fn key(&self) -> Option<u64> { ... } fn debug_name(&self) -> &'static str { ... } fn semantics(&self) -> Option<SemanticsProperties> { ... } fn describes(&self) -> Option<Description> { ... } fn on_edit(&self, _edit: &mut Edit, _key: &Key) -> Option<Msg> { ... } fn positional_click( &self, _local_x: f32, _local_y: f32, _width: f32, _height: f32, ) -> Option<Msg> { ... } fn cursor_icon( &self, _local_x: f32, _local_y: f32, _width: f32, _height: f32, ) -> Option<Cursor> { ... } fn cursor_at( &self, _local_x: f32, _local_y: f32, _width: f32, _scroll_cursor: usize, ) -> Option<usize> { ... } fn text_metrics( &self, _width: f32, _cursor: usize, ) -> Option<(f32, f32, f32, f32)> { ... } fn text_viewport(&self, _rect: Rect) -> Option<Rect> { ... } fn caret_vertical( &self, _width: f32, _cursor: usize, _down: bool, _page: bool, _goal_x: Option<f32>, ) -> Option<(usize, f32)> { ... } fn selected_text(&self, _edit: &Edit) -> Option<String> { ... } fn text_value(&self) -> Option<&str> { ... } fn selection_text(&self) -> Option<&str> { ... } fn selection_hit( &self, _local_x: f32, _local_y: f32, _width: f32, ) -> Option<usize> { ... } fn selection_grip( &self, _width: f32, _index: usize, _start: bool, ) -> Option<SelectionHandle> { ... } fn area_toolbar( &self, _context: ToolbarContext, ) -> Option<Option<&dyn Widget<Msg>>> { ... } fn region_toolbar( &self, _context: ToolbarContext, _width: f32, _range: (usize, usize), ) -> Option<(Rect, &dyn Widget<Msg>)> { ... } fn takes_typing(&self) -> bool { ... } fn replace_value(&self, _value: String) -> Option<Msg> { ... } fn word_at(&self, _index: usize) -> Option<(usize, usize)> { ... } fn selection_handles( &self, _width: f32, _edit: &Edit, _scroll_y: f32, ) -> Option<[SelectionHandle; 2]> { ... } fn selection_toolbar( &self, _context: ToolbarContext, ) -> Option<&dyn Widget<Msg>> { ... } fn selection_anchor( &self, _width: f32, _edit: &Edit, _scroll_y: f32, ) -> Option<Rect> { ... } fn edit_action(&self) -> Option<EditAction> { ... } fn shortcut_bindings(&self) -> &[(KeyStroke, Intent)] { ... } fn shortcut_callbacks(&self) -> &[(KeyStroke, Msg)] { ... } fn action_bindings(&self) -> &[(Intent, Msg)] { ... } fn action_listeners(&self) -> &[(Intent, Msg)] { ... } fn on_keystroke(&self) -> Option<Rc<dyn Fn(KeyStroke) -> Option<Msg>>> { ... } fn focusable(&self) -> bool { ... } fn autofocus(&self) -> bool { ... } fn descendants_focusable(&self) -> bool { ... } fn focus_skip_traversal(&self) -> bool { ... } fn focus_order(&self) -> Option<f32> { ... } fn focus_group(&self) -> bool { ... } fn autofill_hints(&self) -> &[AutofillHint] { ... } fn autofill_group(&self) -> bool { ... } fn draws_own_focus(&self) -> bool { ... } fn draggable(&self) -> bool { ... } fn drag_track(&self) -> DragTrack { ... } fn on_drag(&self, _fraction: f32) -> Option<Msg> { ... } fn on_drag_start(&self, _fraction: f32) -> Option<Msg> { ... } fn on_drag_end(&self, _fraction: f32) -> Option<Msg> { ... } fn on_drag_delta(&self, _dx: f32) -> Option<Msg> { ... } fn hero_tag(&self) -> Option<u64> { ... } fn drag_payload(&self) -> Option<u64> { ... } fn drag_needs_long_press(&self) -> bool { ... } fn drag_ghost_opacity(&self) -> f32 { ... } fn on_dropped(&self, _accepted: bool) -> Option<Msg> { ... } fn drop_zone(&self) -> bool { ... } fn accepts_drag(&self, _payload: u64) -> bool { ... } fn on_drop(&self, _payload: u64) -> Option<Msg> { ... } fn reorder_index(&self) -> Option<usize> { ... } fn on_reorder(&self, _to: usize) -> Option<Msg> { ... } fn reorder_axis(&self) -> ReorderAxis { ... } fn reorder_inserts(&self) -> bool { ... } fn reorder_draggable(&self) -> bool { ... } fn reorder_droppable(&self) -> bool { ... } fn reorder_announcement(&self, _to: usize) -> Option<String> { ... } fn announce(&self) -> Option<String> { ... } fn stack(&self) -> bool { ... } fn sticky_header(&self) -> bool { ... } fn custom_layout(&self) -> Option<CustomLayout<'_>> { ... } fn continuous(&self) -> bool { ... } fn repaint_boundary(&self) -> bool { ... } fn scroll_content(&self) -> Option<&dyn Widget<Msg>> { ... } fn virtual_list(&self, _viewport: Size) -> Option<VirtualList<'_, Msg>> { ... } fn page_view(&self) -> Option<PagedView<'_, Msg>> { ... } fn on_page_changed(&self, _page: usize) -> Option<Msg> { ... } fn on_scroll(&self, _position: ScrollPosition) -> Option<Msg> { ... } fn scroll_grain(&self) -> f32 { ... } fn intrinsic(&self) -> Option<(IntrinsicAxis, Option<f32>)> { ... } fn overflow_box(&self) -> Option<Overflow> { ... } fn constraints_transform(&self) -> Option<ConstraintsTransform> { ... } fn animated_size(&self) -> Option<SizeAnimation> { ... } fn size_factor(&self) -> Option<(f32, f32)> { ... } fn clips_to_box(&self) -> bool { ... } fn layout_builder(&self) -> Option<&dyn Fn(Size) -> Box<dyn Widget<Msg>>> { ... } fn scroll_overlay(&self) -> Option<&OverlayBuilder<Msg>> { ... } fn scroll_axis(&self) -> Axis { ... } fn scroll_physics(&self) -> Option<ScrollPhysics> { ... } fn scrollbars(&self) -> Option<Scrollbars> { ... } fn thumb_visibility(&self) -> Option<bool> { ... } fn ime(&self) -> Ime { ... } fn overlay(&self) -> Option<(&dyn Widget<Msg>, Placement)> { ... } fn overlay_dismiss(&self) -> Option<Msg> { ... } fn overlay_scrim(&self, _theme: &Theme) -> Option<Color> { ... } fn overlay_traps_focus(&self) -> bool { ... } fn anim_target(&self) -> Option<f32> { ... } fn anim_transform(&self) -> Option<TransformValues> { ... } fn anim_duration(&self) -> f32 { ... } fn anim_curve(&self) -> Curve { ... } fn opacity_group(&self) -> Option<f32> { ... } fn anim_color(&self) -> Option<Color> { ... } fn anim_size(&self) -> Option<Size> { ... } fn anim_radius(&self) -> Option<BorderRadius> { ... } fn anim_padding(&self) -> Option<Insets> { ... } fn anim_offset(&self) -> Option<(f32, f32)> { ... } fn anim_pins(&self) -> Option<Positioning> { ... } fn anim_fractions(&self) -> Option<(Option<f32>, Option<f32>)> { ... } fn anim_text_style(&self) -> Option<TextStyle> { ... } fn alignment_geometry(&self) -> Option<AlignmentGeometry> { ... } fn transform_translate(&self) -> Option<(f32, f32)> { ... } fn translate_fraction(&self) -> Option<(f32, f32)> { ... } fn transform_scale(&self) -> Option<(f32, f32, Alignment)> { ... } fn transform_rotate(&self) -> Option<(f32, Alignment)> { ... } fn clip_shape(&self) -> Option<ClipShape> { ... } fn style_themed(&self, _theme: &Theme) -> Style { ... } fn theme_override(&self, _inherited: &Theme) -> Option<Box<Theme>> { ... } fn media_override(&self, _inherited: MediaQuery) -> Option<MediaQuery> { ... } fn scaffold_override(&self) -> Option<ScaffoldInfo> { ... } fn scroll_behavior_override(&self) -> Option<ScrollBehavior> { ... } fn build_themed(&self, _theme: &Theme) { ... } fn build_in(&self, _id: WidgetId, _runtime: &Runtime, theme: &Theme) { ... } fn expand(&self, _id: WidgetId, _runtime: &Runtime, _theme: &Theme) { ... } fn switches(&self) -> bool { ... } fn system_ui_style(&self) -> Option<SystemUiOverlayStyle> { ... } fn ink(&self, _theme: &Theme) -> Option<InkStyle> { ... } fn foreground(&self, _theme: &Theme) -> Option<BoxDecoration> { ... } fn layer_filter(&self, _cx: FilterContext) -> Option<LayerFilter> { ... } fn backdrop_group(&self) -> bool { ... } fn text_baseline(&self, _theme: &Theme) -> Option<f32> { ... } fn ignores_baseline(&self) -> bool { ... } fn fill_axes(&self, _theme: &Theme) -> FillAxes { ... } fn soft_extent(&self) -> FillAxes { ... } fn main_axis_floor(&self, _theme: &Theme) -> Option<f32> { ... } fn tile_shape(&self) -> Option<f32> { ... } fn positioned(&self) -> Option<Positioning> { ... } fn stack_fit(&self) -> StackFit { ... } fn stack_measured(&self) -> bool { ... } fn stack_clips(&self) -> bool { ... } fn stack_direction(&self) -> Option<TextDirection> { ... } fn stack_visible(&self) -> Option<usize> { ... } fn keep_visible(&self, _size: Size, _theme: &Theme) -> Option<KeepVisible> { ... } fn scroll_reverse(&self) -> bool { ... } fn scroll_padding(&self) -> Insets { ... } fn baseline_target(&self) -> Option<f32> { ... } fn clip_path(&self) -> Option<&Path> { ... } fn dismissible(&self) -> Option<DismissSpec> { ... } fn on_dismissed(&self, _direction: DismissDirection) -> Option<Msg> { ... } fn sheet(&self) -> Option<&SheetSpec> { ... } fn on_sheet_dismissed(&self) -> Option<Msg> { ... } fn refresh(&self) -> Option<RefreshSpec> { ... } fn on_refresh(&self) -> Option<Msg> { ... } fn barrier(&self) -> Option<ModalBarrier> { ... } fn interactive(&self) -> Option<(f32, f32)> { ... } fn fitted(&self) -> Option<BoxFit> { ... } fn rotated_quarter_turns(&self) -> Option<i32> { ... } fn navigator(&self) -> Option<(f32, bool)> { ... } fn navigator_gesture(&self) -> bool { ... } fn navigator_clips(&self) -> bool { ... } fn navigator_retained(&self) -> usize { ... } fn on_long_press(&self) -> Option<Msg> { ... } fn on_double_tap(&self) -> Option<Msg> { ... } fn on_secondary_tap(&self) -> Option<Msg> { ... } fn pointer_listener(&self) -> bool { ... } fn on_pointer_event(&self, _event: ListenerEvent) -> Vec<Msg> { ... } fn hover_region(&self) -> Option<HoverRegion> { ... } fn on_hover_event(&self, _event: HoverEvent) -> Option<Msg> { ... } fn pan_axis(&self) -> Option<PanAxis> { ... } fn on_pan(&self, _event: PanEvent) -> Option<Msg> { ... } fn wants_title_bar(&self) -> bool { ... } fn title_bar_role(&self) -> Option<TitleBarRole> { ... } fn pan_value( &self, _event: PanEvent, _value: f32, _rtl: bool, ) -> Option<f32> { ... } fn on_value_release(&self, _value: f32) -> Option<Msg> { ... } fn on_key(&self, _key: &Key) -> KeyResponse<Msg> { ... } fn measure(&self, _theme: &Theme) -> Option<MeasureFn<'_>> { ... } fn measure_key(&self, _theme: &Theme) -> Option<u64> { ... }
}
Expand description

A widget: a node of the tree that is laid out by Widget::style, painted by Widget::paint and asked what a click means by Widget::on_click; Msg is the message it emits when the reader interacts with it.

Only those four are required. Everything else — focus, scrolling, editing, semantics, the hooks a container uses to build its children late — has a default that does nothing, so a widget implements what it takes part in and no more.

Required Methods§

Source

fn style(&self) -> Style

Layout style (handed to frus-layout).

Source

fn children(&self) -> &[Box<dyn Widget<Msg>>]

The widget’s children (possibly empty).

Source

fn paint(&self, bounds: Rect, status: Status, theme: &Theme, scene: &mut Scene)

Paints the widget’s own decoration, according to its status (hover / focus / cursor / selection) and the current theme.

Source

fn on_click(&self) -> Option<Msg>

Message to emit on click (None = not clickable).

Provided Methods§

Source

fn opaque(&self) -> bool

Whether a press that lands on this widget and on nothing inside it stops here.

An ordinary widget is transparent to a press it has no message for: the press carries on to whatever is behind. That is right for a label on a card and wrong for a surface — a floating panel, a sheet, a bar — where the thing behind is the page and the press reaching it means the panel is dismissed by a click on its own padding, or on a row that said it was unavailable.

It is registered before the widget’s children, so anything inside still wins; all this catches is what nothing inside claimed. false by default, because a widget that stops presses it does not use is the surprising one.

This is not crate::AbsorbPointer, which discards the whole subtree’s targets. Here the subtree keeps every one of them and only the gaps between them are closed.

Source

fn key(&self) -> Option<u64>

Stable identity key (independent of the position among siblings). None = positional identity. See crate::Keyed.

Source

fn debug_name(&self) -> &'static str

Short name of the widget — for the inspector and diagnostic dumps. Defaults to the name of the concrete type, without module path or generics (each implementation gets its own monomorphised copy of this default body). Transparent wrappers (Box, crate::Keyed…) delegate to their content.

Source

fn semantics(&self) -> Option<SemanticsProperties>

The widget’s accessibility annotation (role, label, value, state), exposed to assistive technologies through the AccessKit tree. None = no semantics of its own (a layout container — its children, though, may have some). See frus_core::SemanticsProperties.

Source

fn describes(&self) -> Option<Description>

What this widget says about its child’s subtree, when it knows something the child cannot know about itself — the crate::Semantics wrapper, and nothing else so far.

Widget::semantics is a widget answering for itself and covers the ordinary case. This covers the one it cannot: a caller handed an already-built widget, with no way in. Read in one place in the walk, the way a ModalBarrier is — the subtree is walked exactly as usual and what it produced is reconciled afterwards, so a widget deep inside annotates itself without knowing anything is speaking for it.

Source

fn on_edit(&self, _edit: &mut Edit, _key: &Key) -> Option<Msg>

Applies a key to the focused widget: mutates the edit state (cursor/selection) and returns a message if the value changes.

Source

fn positional_click( &self, _local_x: f32, _local_y: f32, _width: f32, _height: f32, ) -> Option<Msg>

Positional click: a message emitted according to where the click landed (local coordinates from the widget’s top-left corner, within the width × height box), taking priority over on_click. For clickable sub-regions — e.g. the suffix icon of a crate::TextField (clear / reveal) or a chart point (milestone 221). None (the default) = no sub-region; the shell falls back to on_click.

Source

fn cursor_icon( &self, _local_x: f32, _local_y: f32, _width: f32, _height: f32, ) -> Option<Cursor>

Shape of the system cursor wanted at the local position (local_x, local_y) inside the widget’s width × height box (milestone 205): Some(Cursor::Pointer) over a clickable sub-region (a suffix icon…), None (the default) = no opinion, the shell keeps the default cursor. Does not affect clicking; this is purely the pointer’s appearance on hover.

Source

fn cursor_at( &self, _local_x: f32, _local_y: f32, _width: f32, _scroll_cursor: usize, ) -> Option<usize>

Cursor index matching a local position (px from the widget’s top-left corner) — for placing the caret on click. local_y picks the line in a multi-line field (ignored on a single line).

width = the field’s width, scroll_cursor = the cursor from which to recompute the current scroll (the same one the render used), so that a click lands right even when the text is scrolled. None = not a text field.

Source

fn text_metrics( &self, _width: f32, _cursor: usize, ) -> Option<(f32, f32, f32, f32)>

SingleChildScrollView metrics of a multi-line field, for a widget width and a cursor: (content height, visible box height, caret top, caret height), in content space (px). The shell uses them to register the scrollable region and to keep the caret in view. None otherwise.

Source

fn text_viewport(&self, _rect: Rect) -> Option<Rect>

Frame (input box) of a multi-line field within its rect — the area where the text scrolls, below the label. Used to place the scrollbar and the scrollable region exactly on the box. None otherwise.

Source

fn caret_vertical( &self, _width: f32, _cursor: usize, _down: bool, _page: bool, _goal_x: Option<f32>, ) -> Option<(usize, f32)>

Moves the caret vertically in a multi-line field and returns (new index, visual column used).

  • down: down (true) or up. page: jump by a page (the visible height) rather than by a line.
  • goal_x: remembered target visual column (px) to preserve while crossing shorter lines; None = start from the current column. The returned value is the column to remember again for the next jump.
  • Line: None if already on the first/last line (or not multi-line) — the shell then moves the focus instead.
  • Page: clamped to the field (it never leaves it); None only when not multi-line.
Source

fn selected_text(&self, _edit: &Edit) -> Option<String>

The currently selected text (for copy/cut).

Source

fn text_value(&self) -> Option<&str>

The field’s whole value, if this widget is a text field — to give the IME its input context (suggestions). None otherwise.

Source

fn selection_text(&self) -> Option<&str>

The words this widget shows, if it takes part in a SelectionArea: a Text, and nothing that is not made of words. The walk registers such a widget as a text stop when it is inside an area, so that a selection can begin, end and pass through it.

Source

fn selection_hit( &self, _local_x: f32, _local_y: f32, _width: f32, ) -> Option<usize>

The character boundary of selection_text nearest a local position (px from the widget’s top-left corner) in a box width wide — the layout the widget was drawn with, which is what a press is hit against.

Source

fn selection_grip( &self, _width: f32, _index: usize, _start: bool, ) -> Option<SelectionHandle>

The handle that hangs from character boundary index of this widget’s words — the start handle when start, the end handle otherwise — in local coordinates, for a widget width wide: where it is painted, and so where a finger takes it. None for anything that is not a text.

Source

fn area_toolbar( &self, _context: ToolbarContext, ) -> Option<Option<&dyn Widget<Msg>>>

The bar a SelectionArea offers over its selection, for context, when the application has said what it holds (SelectionArea::selection_toolbar): Some of the bar, or Some(None) for no bar at all. None for anything else — and for an area that was told nothing — whose texts then offer Copy and Select all.

Source

fn region_toolbar( &self, _context: ToolbarContext, _width: f32, _range: (usize, usize), ) -> Option<(Rect, &dyn Widget<Msg>)>

The bar over the part of a selection area’s selection that lies in this widget — range, in characters — for context, and the box it is placed against in local coordinates, for a widget width wide. None for anything that is not a text, or when the list for context is empty.

Source

fn takes_typing(&self) -> bool

Whether this widget takes typing: a field that can be changed, which is what the software keyboard is for. A text field that may only be read and selected — a read_only one, a Text made selectable — answers false: it has a caret and a selection, and no use for a keyboard sliding up over the words being read.

Defaults to whether it holds a text value at all.

Source

fn replace_value(&self, _value: String) -> Option<Msg>

The message that puts value in this field: the one typing would have produced, for a value the framework restores rather than the user typing it.

Undo needs it and nothing else does. The value is the application’s — a field owns its caret and not its text — so an undo cannot reach in and set what is on screen; it has to go back through a message like any other edit, or the next frame would paint the value the application still holds.

Source

fn word_at(&self, _index: usize) -> Option<(usize, usize)>

Range (start, end) of the word around the given index (for double-click).

Source

fn selection_handles( &self, _width: f32, _edit: &Edit, _scroll_y: f32, ) -> Option<[SelectionHandle; 2]>

The two handles of the selection in edit, start then end, for a field width wide whose content is scrolled down by scroll_y — where they are painted, and so where a finger takes them. None when there is no selection, or this is not a text field.

Source

fn selection_toolbar( &self, _context: ToolbarContext, ) -> Option<&dyn Widget<Msg>>

The bar this field shows over its selection (Cut, Copy, Paste, Select all — see crate::ToolbarItem) for context, or None when there is none to show: this is not a text field, or the application’s list for that context is empty.

The runtime asks it when the shell has marked this field as showing its bar, and floats the answer over everything, anchored on selection_anchor. One bar per context, built once and kept — a bar is a widget the walk borrows for the frame, and two different lists must not share an identity.

Source

fn selection_anchor( &self, _width: f32, _edit: &Edit, _scroll_y: f32, ) -> Option<Rect>

The box the bar is placed against, in the field’s local coordinates: the selection’s, or the caret’s when nothing is selected. Like selection_handles it is the paint’s own geometry.

Source

fn edit_action(&self) -> Option<EditAction>

The editing action pressing this widget performs on the focused field, for a button of the bar that carries no message (see crate::EditAction).

Source

fn shortcut_bindings(&self) -> &[(KeyStroke, Intent)]

Keystrokes this subtree binds to intents — see crate::Shortcuts.

Source

fn shortcut_callbacks(&self) -> &[(KeyStroke, Msg)]

Keystrokes this subtree binds straight to messages — see crate::CallbackShortcuts.

Source

fn action_bindings(&self) -> &[(Intent, Msg)]

Intents this subtree answers — see crate::Actions.

Source

fn action_listeners(&self) -> &[(Intent, Msg)]

Intents this subtree watches without answering — see crate::ActionListener.

Source

fn on_keystroke(&self) -> Option<Rc<dyn Fn(KeyStroke) -> Option<Msg>>>

Every keystroke reaching this subtree, handed to a closure — see crate::KeyboardListener. None (the default) is not a listener.

Source

fn focusable(&self) -> bool

If true, the widget can take keyboard focus (click or Tab).

Source

fn autofocus(&self) -> bool

If true, a focusable widget takes the focus when it appears: a menu’s first row when the menu opens, a field on a screen made to type into (milestone 605). Where the focus came from is remembered, and it goes back there when this one goes.

Source

fn descendants_focusable(&self) -> bool

If false, nothing inside this subtree can take focus — the reference’s ExcludeFocus. A dimmed panel behind a sheet is still drawn and still measured; it simply stops being somewhere Tab can land.

Source

fn focus_skip_traversal(&self) -> bool

If true, this subtree’s focus stops are skipped by Tab while remaining focusable by a click — the reference’s ExcludeFocusTraversal. The two are separate questions: a toolbar button may be reachable with the pointer and still not belong in the keyboard’s order.

Source

fn focus_order(&self) -> Option<f32>

A traversal order for this subtree’s focus stops, smallest first — the reference’s NumericFocusOrder. None leaves them in tree order, which is where everything sits until someone says otherwise.

Source

fn focus_group(&self) -> bool

If true, this subtree is a traversal group: an order set inside it is resolved among its own members and nowhere else, so a reordered dialog does not reshuffle the page behind it.

Source

fn autofill_hints(&self) -> &[AutofillHint]

What this field is for, so the platform can fill it in — see AutofillHint. Empty (the default) is a field that takes no part in autofill at all.

A list, because a field can legitimately be more than one thing: a sign-in box taking an email address is the username and the email.

Source

fn autofill_group(&self) -> bool

If true, this subtree’s fields are one form — the reference’s AutofillGroup. A service shown a password with no username beside it has nothing to save the pair under.

Source

fn draws_own_focus(&self) -> bool

If true, the widget draws its focus indicator itself (the driver then does not stroke the generic ring). E.g. TextField.

Source

fn draggable(&self) -> bool

If true, the widget responds to pointer dragging (sliders, handles).

Source

fn drag_track(&self) -> DragTrack

Where along a draggable widget its drag lands (milestone 648): how far in from each end the travel starts, and whether it runs from the right in a right-to-left reading direction. The fraction on_drag and its edges are given is measured along that travel. The default is the whole width, left to right.

Source

fn on_drag(&self, _fraction: f32) -> Option<Msg>

Message produced while dragging, fraction being the relative horizontal position (0.0..=1.0) within the widget’s bounds.

Source

fn on_drag_start(&self, _fraction: f32) -> Option<Msg>

Message produced when a value drag begins — on the press, before the first on_drag.

With on_drag_end it brackets the stream: on_drag fires on every pixel of the movement, and an application that saves to disk, seeks a video or asks the network on each of those does it sixty times a second. The bracket is what lets it do the cheap thing while the finger is down and the expensive one when it lifts — and without an end there is no moment at which to do it at all.

Not to be confused with on_dropped, which belongs to drag-and-drop: that one moves a thing, this one changes a number.

Source

fn on_drag_end(&self, _fraction: f32) -> Option<Msg>

Message produced when a value drag ends — on the release, with the fraction the pointer finished on.

See on_drag_start.

Source

fn on_drag_delta(&self, _dx: f32) -> Option<Msg>

Message produced by a horizontal drag expressed as a delta: dx is the movement (logical px) since the last event. For handles that accumulate (column resizing), unlike on_drag (an absolute fraction, e.g. a slider). The shell tries it before on_drag; a widget implements only one of the two.

Source

fn hero_tag(&self) -> Option<u64>

If this widget is a shared element, its tag. Two heroes with the same tag on the two sides of a route transition are one thing in two places. See crate::Hero.

Source

fn drag_payload(&self) -> Option<u64>

If this widget can be picked up and dropped elsewhere, what it carries. See crate::Draggable.

Source

fn drag_needs_long_press(&self) -> bool

Does this item lift on a long press rather than on the first movement? The answer inside a scrollable, where a plain drag belongs to the scroll.

It is asked of both kinds of lift — a crate::Draggable carrying a payload, and a crate::ReorderableList row carrying itself — because the question is the same one: a list that stops scrolling is a worse bug than an item that does not move.

Source

fn drag_ghost_opacity(&self) -> f32

How solid the item left behind looks while a copy of it is being dragged.

Source

fn on_dropped(&self, _accepted: bool) -> Option<Msg>

Message sent when a drag of this item ends, true if a target took it.

Source

fn drop_zone(&self) -> bool

Is this widget a drop target? See crate::DragTarget.

Source

fn accepts_drag(&self, _payload: u64) -> bool

Would this target take payload? Only asked of a drop target.

Source

fn on_drop(&self, _payload: u64) -> Option<Msg>

Message sent when an accepted item is dropped on this target.

Source

fn reorder_index(&self) -> Option<usize>

If this widget is a reorderable header, its column index. The shell uses it to identify the source column (on press) and the target column (under the pointer on release) of a reordering drag.

Source

fn on_reorder(&self, _to: usize) -> Option<Msg>

Message emitted when this header (the source) is dropped on column to. The widget knows its own index and the on_reorder(from, to) callback.

Source

fn reorder_axis(&self) -> ReorderAxis

Movement axis of this reorderable (default ReorderAxis::Horizontal): the shell orients the drag preview (ghost + insertion indicator) accordingly. Kanban cards return ReorderAxis::Vertical.

Source

fn reorder_inserts(&self) -> bool

Is a horizontal reorderable dropped between its neighbours, like a list’s row, rather than into the place of the one under the pointer, like a table’s column? false by default, which is the table.

The two are different gestures, not one gesture on two axes. A column follows the pointer with a continuous slide and takes the index of the column it lands on. A row is inserted before or after the slot it is over — whichever half the pointer is in — with an insertion line, a gap that opens there, and the nearest slot of its own list when the pointer is over none. A widget that answers true gets the second.

Only asked of a horizontal reorderable: every vertical one is inserted between its neighbours already, and answering here changes nothing for it.

Source

fn reorder_draggable(&self) -> bool

Can this reorderable be picked up as a drag source? true by default for every reorderable. A target-only slot — the drop zone at the end of a Kanban column — returns false: a card can be dropped there, not lifted from it (otherwise the drag would raise an empty ghost that moves nothing).

Source

fn reorder_droppable(&self) -> bool

Can this reorderable be dropped onto? true by default, and the mirror image of reorder_draggable: a source-only grip — a list row’s drag handle — returns false.

A handle is a small box inside a much larger row, and the drop is aimed at whatever is topmost under the pointer. Without this, carrying a row over another row’s handle would aim at the handle: the insertion line would be drawn across the grip instead of across the row, which is a promise about where the row is going that is not true.

Source

fn reorder_announcement(&self, _to: usize) -> Option<String>

What to say to a screen reader once this reorderable has been moved to to — the spoken counterpart of the ghost, for someone who cannot see it land.

None leaves the shell its own wording, which can only speak of the axis: the index a Kanban card is dropped at is a flat column × stride + position that means nothing read out loud. A widget whose index is a position says so itself.

Source

fn announce(&self) -> Option<String>

Text to announce to the screen reader when this widget is activated (mouse click or Enter/Space) — a live region reads it out loud. Describes the effect the activation produced (“Sorted by Name ascending”, “All rows selected”), for the blind user who cannot perceive the visual change. None = nothing to announce (the default).

Source

fn stack(&self) -> bool

If true, the widget is a stack: its children are superimposed layers (the same box), rendered in order (the last one on top).

Source

fn sticky_header(&self) -> bool

If true, the widget is a section with a sticky header (crate::StickyHeader): its first child is painted, and takes taps, at the top of what is visible of the section, over the second (milestone 602).

Source

fn custom_layout(&self) -> Option<CustomLayout<'_>>

If the widget places its children with a function — a crate::CustomMultiChildLayout — the function and one key per child. The children are then laid out and placed in the walk, by the function, and not in this node’s layout (milestone 601).

Source

fn continuous(&self) -> bool

If true, the widget animates continuously (driven by time, not by a target): the framework keeps redrawing. E.g. CircularProgressIndicator.

Source

fn repaint_boundary(&self) -> bool

If true, this widget is a repaint boundary: its subtree is cached (primitives + interaction maps) and reused as is as long as its geometry and the interaction state of its descendants do not change — a widget animating elsewhere no longer forces it to repaint. See crate::Container::repaint_boundary and paintcache.rs.

Source

fn scroll_content(&self) -> Option<&dyn Widget<Msg>>

If the widget is a scrollable container, returns its content.

Source

fn virtual_list(&self, _viewport: Size) -> Option<VirtualList<'_, Msg>>

If the widget is a virtualised list, returns its description (item count, height, factory). Only the visible items are built.

Source

fn page_view(&self) -> Option<PagedView<'_, Msg>>

If the widget is a paged view, returns its description (page count, axis, factory). Like a virtualised list, only the visible pages are built.

Source

fn on_page_changed(&self, _page: usize) -> Option<Msg>

Message sent by a paged view when the page on screen changes.

Source

fn on_scroll(&self, _position: ScrollPosition) -> Option<Msg>

Message sent by a scroll region when its offset changes — the reading half of crate::ScrollPosition.

Silent by default, and that is the answer to what it costs: a region nobody is listening to reports nothing, so a fling over an ordinary list is exactly as cheap as it was. A region somebody is listening to sends a message per frame while it moves, because a bar that fades in as the page goes down needs every frame of it — and a region that only wants to know when the end is near says so through Widget::scroll_grain rather than by being reported less honestly.

Source

fn scroll_grain(&self) -> f32

How far this region must move before it says so again, in pixels; 0 — the default — reports every change.

A grain suppresses the reports in between, never the last one: a region that comes to rest anywhere other than where it was last reported reports that, whatever the grain. Otherwise a coarse grain would leave the application believing a list was at 1 200 when it settled at 1 247, which is a worse answer than a slower one.

Source

fn intrinsic(&self) -> Option<(IntrinsicAxis, Option<f32>)>

If the widget takes one axis from its content’s preferred size, returns that axis and the step its measurement is rounded up to. See crate::Intrinsic.

Source

fn overflow_box(&self) -> Option<Overflow>

If the widget lays its child out to constraints of its own, which the child may exceed, returns them. See crate::OverflowBox.

Source

fn constraints_transform(&self) -> Option<ConstraintsTransform>

The box this widget gives its child as a function of the box it was offered, with the child laid out in it separately and the box then sized to what came back. None — the default — means the child shares this node’s layout, as everything ordinary does. See crate::ConstraintsTransformBox.

Source

fn animated_size(&self) -> Option<SizeAnimation>

If the box this widget’s constraints_transform makes follows its child’s size over time rather than at once, how (milestone 594). See crate::AnimatedSize.

Source

fn size_factor(&self) -> Option<(f32, f32)>

If the box this widget’s constraints_transform makes is a multiple of its child’s size — (across, down), 1 for as big as the child — the multiples (milestones 596 and 597). See crate::SizeTransition and crate::Aligned::width_factor.

Source

fn clips_to_box(&self) -> bool

Whether the box this widget’s constraints_transform makes cuts its child to itself. A reveal does; an anchor with a factor lets its child spill (milestone 597).

Source

fn layout_builder(&self) -> Option<&dyn Fn(Size) -> Box<dyn Widget<Msg>>>

If the widget builds its content from its actual box, returns the size → widget factory. The content is built on the fly: no retained state and no overlay (like a virtualised list item).

Source

fn scroll_overlay(&self) -> Option<&OverlayBuilder<Msg>>

If the widget draws something over its scroll region, returns the offset → overlay factory. See crate::ScrollOverlay.

The region is this widget’s first child, so the offset the walk hands over is its own child’s and nothing has to be named. Like a layout_builder’s content, the overlay is built on the fly and has no retained state.

Source

fn scroll_axis(&self) -> Axis

SingleChildScrollView axis (or axes), for a scrollable container.

Source

fn scroll_physics(&self) -> Option<ScrollPhysics>

The edge and fling behaviour of a scrollable container, when this widget wants one in particular. None — the usual answer — leaves the choice to the application, which defaults to what the platform does.

Source

fn scrollbars(&self) -> Option<Scrollbars>

Whether this area draws a scrollbar, when it wants its own answer rather than the application’s. None — the default — follows the application, which follows the platform. See crate::Scrollbars.

Source

fn thumb_visibility(&self) -> Option<bool>

Keep this area’s scrollbar on screen, instead of letting it fade away when the area stops moving (scrollbar.dart:214).

None — the default — lets it fade, which is what a bar over content should do. Some(true) pins it: for an area whose content is not obviously scrollable, or one a reader is meant to be able to aim at without scrolling first.

Source

fn ime(&self) -> Ime

What the software keyboard should be, when this widget is the focused editable one.

Only ever asked of the field that has focus — the platform layer finds it the same way it finds the caret — so a widget that is not editable never has to answer, and the default is the ordinary text keyboard with a Done key.

See crate::ime for what the two halves mean and why the mapping to the platform’s numbers is tested rather than trusted.

Source

fn overlay(&self) -> Option<(&dyn Widget<Msg>, Placement)>

If the widget is a portal, returns its floating content and its placement.

Source

fn overlay_dismiss(&self) -> Option<Msg>

Message emitted when the scrim of a modal is clicked (dismissal), if any.

Source

fn overlay_scrim(&self, _theme: &Theme) -> Option<Color>

The colour of the scrim behind this widget’s modal overlay, when it wants one in particular. None — the usual answer — leaves it to the scheme’s scrim role at the framework’s own opacity.

The alpha is the caller’s: a scrim is the one colour whose transparency is the whole point, so a fully opaque value here means an opaque scrim, and Color::TRANSPARENT means none at all — an overlay that darkens nothing, which the reference reaches by the same route.

Source

fn overlay_traps_focus(&self) -> bool

If true, this widget’s anchored overlay (a menu…) traps focus: Tab and the arrow keys cycle within its focusables while it is open (the keyboard pattern of menus). Modal (scrimmed) overlays already trap by default; a tooltip or an autocomplete list (focus stays on the field) do not. Default: false.

Source

fn anim_target(&self) -> Option<f32>

Target of the widget’s own animated value (e.g. 1.0 for a switch that is on, 0.0 for off). The runtime drives the retained value towards this target and hands it back through Status::value. None = no animated value.

Source

fn anim_transform(&self) -> Option<TransformValues>

Target transform of an animated one (Transform::animated): the runtime tweens the scales and the turn through anim_duration/anim_curve and hands the interpolated value back through Runtime::anim_transform, which the paint walk reads in place of the static transform_scale/transform_rotate. None = the transform does not move.

The pivot is not part of it: see TransformValues.

Source

fn anim_duration(&self) -> f32

Duration (seconds) of the animated value’s transition (anim_target). Default: the framework’s standard duration.

Source

fn anim_curve(&self) -> Curve

Easing curve of the animated value’s transition (anim_target). Default: linear.

Source

fn opacity_group(&self) -> Option<f32>

If the widget is an opacity group, returns the (target) opacity [0,1] applied to its whole subtree as one: the paint walk wraps its primitives in a composited layer at that opacity — no double-blending where they overlap. None = not a group. Combined with anim_target, the opacity animates (a group fade).

Source

fn anim_color(&self) -> Option<Color>

Target background colour of an animated background (Container::animated_color): the runtime tweens it (through anim_duration/anim_curve) and hands the interpolated value back in Status::anim_color. None = no animated colour.

Source

fn anim_size(&self) -> Option<Size>

Target size of an animated size (Container::animated_size): the runtime tweens it (through anim_duration/anim_curve) and the interpolated size is injected at layout (see effective_style). None = fixed size.

Source

fn anim_radius(&self) -> Option<BorderRadius>

Target corner radius of an animated radius (Container::animated_radius): the runtime tweens it and hands the interpolated value back in Status::anim_radius. None = fixed radius.

Source

fn anim_padding(&self) -> Option<Insets>

Target padding of an animated padding (Container::animated_padding): the runtime tweens it and the interpolated padding is injected at layout (see effective_style). None = fixed padding.

Source

fn anim_offset(&self) -> Option<(f32, f32)>

The pair of fractions this node’s offset rule is made of, animated: an alignment’s two fractions, or a slide’s. None — the default — leaves the rule reading the widget’s own numbers.

One quantity serves both rules because a node has one of them. See crate::AnimatedAlign and crate::AnimatedSlide, each of which gives the rule it animates a node of its own.

Source

fn anim_pins(&self) -> Option<Positioning>

Target pins of an animated stack layer (crate::AnimatedPositioned): the runtime tweens them and the interpolated pins are read where the stack lays its layers out. None — the default — leaves Widget::positioned alone.

A pin that is unset does not animate: None on an edge is not nought there, it is a box not pinned on that side at all, and moving between the two would be interpolating between two arrangements rather than two values.

Source

fn anim_fractions(&self) -> Option<(Option<f32>, Option<f32>)>

Target fractions of an animated share of the parent (FractionallySizedBox::animated), as (width factor, height factor): the runtime tweens them and the interpolated pair is injected at layout (see effective_style), like the size and the padding. None = fixed factors.

An axis whose factor is unset follows its content, and the same rule applies: it does not travel to or from a factor, it changes what the axis is doing.

Source

fn anim_text_style(&self) -> Option<TextStyle>

Target text style an animated subtree is heading for (AnimatedDefaultTextStyle). None = the subtree inherits whatever it inherits.

The odd one out of the animated family: what the runtime tweens here is not this node’s box or its paint but the theme everything below it reads, so the value is consumed by the theme swap rather than by the node. That swap happens at four points of the walk — the layout pass, the relayout fingerprint, the paint, and crate::build_deferred — and they all go through crate::ui::scoped_theme so that they cannot answer differently.

Source

fn alignment_geometry(&self) -> Option<AlignmentGeometry>

Alignment of the single child within the box: the walk offsets the child through the free space according to the alignment’s fractions, resolved against the reading direction (physical or directional — see frus_core::AlignmentGeometry). Being continuous, a Tween<Alignment> read in view() slides the child. None = default flex placement.

Source

fn transform_translate(&self) -> Option<(f32, f32)>

Paint offset (dx, dy) applied to the widget’s whole subtree: the render and the hit-test are offset without touching layout (siblings do not move, the child may overflow its box). Continuous → a Tween read in view() slides the subtree. None = no offset. See crate::Transform.

Source

fn translate_fraction(&self) -> Option<(f32, f32)>

Paint offset as a fraction of the child’s own size (fx, fy): (0.5, 0.0) slides the subtree half its own width to the right. Added to Widget::transform_translate, and offsetting the render and the hit-test the same way, without touching layout. None = no offset.

A fraction rather than a number because the number is not known where the widget is written: the child’s size is decided by the layout, and something that has to slide exactly clear of itself — a panel off the edge, a badge half outside its anchor — would otherwise have to be told a width it was never given. See crate::FractionalTranslation.

Source

fn transform_scale(&self) -> Option<(f32, f32, Alignment)>

Paint scaling (sx, sy, pivot) of the whole subtree: the render and the hit-test are scaled — per axis — around the pivot (a frus_core::Alignment within the box), without touching layout. Stays axis-aligned (a scaled rect is still a rect). None = no scaling. See crate::Transform.

Source

fn transform_rotate(&self) -> Option<(f32, Alignment)>

Paint rotation (angle, pivot) of the whole subtree: the subtree is painted rotated by angle radians (clockwise) around the pivot (a frus_core::Alignment within the box), without touching layout. The render goes through a rotated composited layer; the hit-test counter-rotates the point. None = no rotation. See crate::Transform.

Source

fn clip_shape(&self) -> Option<ClipShape>

Shape clip of the whole subtree: the paint walk wraps its primitives in a composited layer whose frus_core::ClipShape (rounded corners, ellipse) modulates the alpha — whatever falls outside the shape is erased, edges antialiased. None = no shape clip. See crate::ClipRRect, crate::ClipOval.

Source

fn style_themed(&self, _theme: &Theme) -> Style

The widget’s style once the theme has had its say — the layout half of the caller ?? theme ?? framework chain.

Defaults to Widget::style, which is what almost every widget wants: only the ones whose size or spacing a theme can set need to override this. It exists because style has no theme and cannot be given one without touching every implementation; a theme that could only reach paint would be able to recolour a divider but not make one thin, which is the setting an application actually asks for (milestone 309).

A transparent wrapper must forward this alongside style, or its child’s themed size is silently dropped for the unthemed one.

Source

fn theme_override(&self, _inherited: &Theme) -> Option<Box<Theme>>

The theme this widget imposes on itself and its subtree, given the one it inherits. None — the default — means “whatever came down from above”, which is what every widget but crate::Themed answers.

This is the third and last thing a theme needed to be usable: milestone 309 gave it per-widget defaults, and this makes those defaults scoped. A dark panel on a light page is one theme swapped for a subtree, not a colour written out by hand at every call site inside it.

It is honoured by layout as well as paint — the walk and the layout pass swap the ambient theme on the way down and restore it on the way out — so a subtree theme can change a divider’s height, not only its colour. A deferred overlay (a dialog, a drawer, a tooltip) is painted long after the walk has left the node that declared it, so it carries the theme it was declared under rather than the root’s.

Boxed because a Theme is a page and a half of tokens and this is asked of every node, every frame: an Option<Box<_>> costs a word on the stack of a recursion as deep as the tree, and the allocation happens only where a subtree actually claims a theme.

Source

fn media_override(&self, _inherited: MediaQuery) -> Option<MediaQuery>

The surface this widget imposes on itself and its subtree, given the one it inherits. None — the default — means “whatever came down from above”, which is what every widget but MediaScope answers.

The counterpart of Self::theme_override, and it exists for the same reason one milestone later: a surface could until now only be narrowed where a widget is constructed (SafeArea::build), and the widget that knows what to narrow is often not the one doing the constructing. A shell hands its app bar’s slot the description that slot should believe in; the bar then decides for itself whether to consume the status bar, which is how the reference splits that job across two widgets.

Applied by the layout walk on the way down and held for the subtree, so anything reading MediaQuery::of below this node sees it — including a subtree deferred until Self::build_themed, which runs after the swap. crate::build_deferred, the relayout fingerprint and the paint walk make the same swap; the four staying in step is what keeps the cache and the picture honest.

Source

fn scaffold_override(&self) -> Option<ScaffoldInfo>

The shell this widget imposes on its subtree: what a Scaffold knows about itself and its slots do not.

The third of the inherited things, after the theme and the surface, and it exists for the same reason as the second: a slot is handed to a shell already built, so the widget that knows there is a drawer is never the one that has to draw the button for it. The reference reads it from the context (Scaffold.of), which is how a bar with no leading grows a menu button on a screen that has a menu and stays empty on one that does not (app_bar.dart:1010).

None — the default — means “whatever came down from above”, which is what every widget but ScaffoldScope answers. Applied by the same four walks as Self::media_override, and for the same reason: an AppBar is composed in Self::build_themed, which runs after the swap, and the relayout fingerprint has to see what the composition saw.

Source

fn scroll_behavior_override(&self) -> Option<ScrollBehavior>

The ScrollBehavior this widget puts in force for its subtree, or None — the default — for whatever came down from above. Only ScrollConfiguration answers otherwise. Applied by the same four walks as Self::scaffold_override: the scrollables under it record what it decides when they are registered (milestone 616).

Source

fn build_themed(&self, _theme: &Theme)

Builds this widget’s subtree from the ambient theme, for the widgets that defer that decision — see ThemeBuilder. Does nothing by default, which is what all but a handful of widgets want.

Self::style_themed and Self::paint let a theme decide how a widget looks. This is for the questions a theme answers earlier than that: whether an application bar centres its title decides which children exist and in what order, and by the time anything is being painted the composition has already been made. A widget assembled by a builder — AppBar::new().build() — never sees a theme at all.

Called by the layout pass on the way down, before Self::children is read, under the theme of the subtree the node sits in. It takes &self like every other hook, so an implementor needs interior mutability; that is safe here because a widget tree is rebuilt from view rather than mutated, so “once per instance” and “once per frame” are the same thing.

Source

fn build_in(&self, _id: WidgetId, _runtime: &Runtime, theme: &Theme)

Self::build_themed, for the few widgets that also need who they are and what the frame remembers to compose their subtree. An AnimatedSwitcher keeps what it is letting go of in the runtime, under its own identity, and that is reachable nowhere else before its children are read.

The walks call this one, and its default is build_themed, so a deferred widget that needs neither keeps implementing only that. A transparent wrapper must forward it with the identity untouched — it has none of its own — or the widget inside is built through build_themed and never learns where it is.

Source

fn expand(&self, _id: WidgetId, _runtime: &Runtime, _theme: &Theme)

Builds what this node stands for, before anything else is asked of it.

A Component is a widget that is built into another, and what it is built into decides everything the walk asks next — its theme scope, its surface, its children. So the walks call this first, on the way down, before those questions and before Self::build_in; by the time they are asked, the node answers as what it built. Called under the theme of the enclosing scope, since the scope a node introduces is not known until it is built.

Idempotent, and the default does nothing. A transparent wrapper must forward it with the identity untouched, for the same reason as build_in.

Source

fn switches(&self) -> bool

Whether this node is an AnimatedSwitcher. An identity is a position, so a switcher and the widget that comes to stand where it stood have the same one: this is how the runtime tells the switcher still being there from its having gone, and forgets what it kept for it.

Source

fn system_ui_style(&self) -> Option<SystemUiOverlayStyle>

What the system bars over this widget should look like — see AnnotatedRegion. None for every widget but that one; a transparent wrapper forwards it, or a keyed region would say nothing.

Source

fn ink(&self, _theme: &Theme) -> Option<InkStyle>

If the widget takes ink — the splash a tap leaves on a material surface — the shape and colour to splash in. None = no ink, which is the default: a widget has to ask.

The walk paints the ripples the runtime holds for this widget directly over this widget’s own paint and under its children, which is where a material surface puts them. A widget that draws its own content (a crate::Button paints its label itself) therefore gets the ink over that content — at the splash’s alpha, a tint rather than a veil. See crate::InkWell.

Source

fn foreground(&self, _theme: &Theme) -> Option<BoxDecoration>

A decoration painted over this widget’s children rather than behind them: the reference’s foregroundDecoration.

It is the one place in the walk where a widget paints after its own subtree, and it exists because there is no other way to say it. A border over a photograph, a wash across a tile that is disabled, a sheen over a card — every one of them is a decoration whose whole point is that the content does not cover it, and behind the content is exactly where Widget::paint puts one.

The box is this widget’s own, the same one paint is given. Inside any layer this widget asks for: an opacity group fades it with everything else, a transform carries it, and a shape clip holds it to the shape — which for a decoration wearing that same radius changes nothing.

None is the default, and costs the walk one Option check per node.

Source

fn layer_filter(&self, _cx: FilterContext) -> Option<LayerFilter>

The pixel effects this widget applies to its whole subtree: a blur, a colour transform, a mask, or a filter over what is painted underneath. The paint walk drains the subtree into a composited layer and hands the filter to the renderer, exactly as it does for an opacity group or a shape clip.

The FilterContext carries what only the walk knows — where the box ended up, and which backdrop group encloses it. A widget that needs neither ignores it.

None — the default — means no layer and no cost. See crate::ColorFiltered, crate::ImageFiltered, crate::ShaderMask, crate::BackdropFilter.

Source

fn backdrop_group(&self) -> bool

true when this widget is a backdrop group: the backdrops below it that ask to be shared are filtered once between them. See crate::BackdropGroup.

Source

fn text_baseline(&self, _theme: &Theme) -> Option<f32>

The widget’s own text baseline: the distance from the top of its box down to the line its letters sit on. None — the default — means this widget has no text of its own, and whatever is inside it answers instead.

It is what makes a price and its currency, or a heading and the note beside it, sit on one line rather than merely in one row. See crate::Baseline and Align::Baseline.

Source

fn ignores_baseline(&self) -> bool

true when this subtree should be left out of a parent’s baseline alignment: it has a baseline, and the parent is to pretend it does not. An icon beside a label, where the label is what the row should line up on. See crate::IgnoreBaseline.

Source

fn fill_axes(&self, _theme: &Theme) -> FillAxes

The axes this widget asks to fill: on each, it takes the room the parent leaves it rather than shrink-wrapping its children. FillAxes::NONE means shrink-wrap on both.

MainAxisSize::Max on a crate::Row or a crate::Column is the reason it exists, and there the axis is the widget’s own main one; a crate::TabBar asks for the horizontal one, which is its cross axis; a full-screen shell asks for FillAxes::BOTH.

It is a question about the parent, which is why it is asked rather than written into the style: filling means growing when the parent runs the same way and stretching when it runs across, and a widget cannot know what it was put inside. The layout walk resolves it, where both are in view. Declaring width: 100% instead does not work and cannot be made to — see FillAxes.

The theme is here for the same reason it is on Widget::measure: a text asks to fill because it was told to align inside its box, and a subtree can hand that alignment down. A hook blind to the theme would leave the one setting that arrives by inheritance silently doing nothing.

Source

fn soft_extent(&self) -> FillAxes

The axes on which this widget’s size is only a default (milestone 590): the room on offer replaces it wherever the widget is asked to fill that axis and the layout can grant it — alone in a box, or across a row or a column. Where it cannot, along a line shared with other children, the default stands.

The reference gives a list, a page view or a field all the room offered, and has nothing to give when that room is unbounded: it stops with an error. A default that stands only there keeps the reference’s size wherever it has one, and something on the screen where it has none.

Source

fn main_axis_floor(&self, _theme: &Theme) -> Option<f32>

The width below which this widget must not be squeezed when its parent runs horizontally — a line of text that would rather run past the end of a row than be folded into a column of single words. None means squeeze freely.

It is asked rather than written into the style because the same number means two different things on the two axes. Down a column a box is handed a width and a floor would refuse it; along a row a box is asked how wide it wants to be, and this is the answer it will not go below. The reference draws the same line: a flex leaves its inflexible children an unbounded main axis and never squeezes them, while across it they take the width they are given.

It is handed the theme for the same reason Widget::style_themed is: the floor is a measurement, and a text whose size comes from an inherited style measures differently. A hook that decided a size without seeing the theme would answer for a font nobody is drawing.

Source

fn tile_shape(&self) -> Option<f32>

If this container gives all of its children the shape of a tile, the width / height ratio to impose on each of them. None = each child keeps its own shape.

A grid’s tiles are the same shape in the reference, and it is the grid that says so — the tile does not know how wide its column came out. Imposed during the walk, like the fill request and the shrink grant, because it needs the children’s layout nodes rather than their styles.

Source

fn positioned(&self) -> Option<Positioning>

If this is a layer pinned against its crate::Stack’s edges (crate::Positioned), what it pins. None = an ordinary layer, sized and placed by the stack’s own fit and alignment.

Read by the stack rather than written into a style: an offset from an edge is not something the layout engine’s box model has a field for, and the number it resolves to depends on how big the stack came out.

Source

fn stack_fit(&self) -> StackFit

How this stack sizes its unpinned layers (crate::StackFit). Unset, Passthrough: each is handed the stack’s box, and one with a size of its own keeps it. Meaningless unless Widget::stack is true.

Source

fn stack_measured(&self) -> bool

Whether this stack is as big as its largest unpinned layer (milestone 639), as crate::Stack is, rather than the size its own style says. Meaningless unless Widget::stack is true.

Source

fn stack_clips(&self) -> bool

Whether this stack cuts its layers at its edges. Unset, it does.

Source

fn stack_direction(&self) -> Option<TextDirection>

The reading direction this stack resolves its alignment and its layers’ start and end pins in, when it names one. Unset, the theme’s.

Source

fn stack_visible(&self) -> Option<usize>

Which layer of this stack is shown: the one at that index paints and takes input, and every other one is laid out and then silenced — not drawn, not clickable, not read out. None, the default, shows all of them.

This is crate::IndexedStack, and it is a question for the walk rather than for the widget: a layer that wrapped itself in something to stay quiet would no longer be laid out the way a bare layer is, which is the one thing an indexed stack promises. Meaningless unless Widget::stack is true.

Source

fn keep_visible(&self, _size: Size, _theme: &Theme) -> Option<KeepVisible>

The box this widget asks the scroll region around it to keep in view, in its own coordinates, with a key naming which box it is.

A tab bar wider than its window is what this is for: the eighth tab is off the side, and nothing about selecting it would otherwise bring it back. The reference scrolls its bar to the selected tab, and so does this.

The key is what makes the region act on a change rather than on every frame. The box moves as the region scrolls, so a region that chased it would pin the content in place and no finger could move it; the key changes only when the widget means a different box.

centre asks for the box in the middle of the window rather than merely inside it — what a tab bar wants, since a selected tab flush against the edge looks like the end of the row. Clamped either way, so the first tab stays at the start.

Source

fn scroll_reverse(&self) -> bool

Whether this scrollable runs from the far end (crate::SingleChildScrollView::reverse): the content is anchored to the end of the viewport and offsets are counted from there. Meaningless unless Widget::scroll_content is Some.

Source

fn scroll_padding(&self) -> Insets

The insets a scrollable area puts around its content, inside the viewport.

The padding scrolls with the content rather than shrinking the window onto it, which is the reference’s SliverPadding and the only reading that is any use: room at the end of a list is reachable by scrolling to it, room taken out of the viewport is not. Read by both the scroll branch and the virtualised list.

Source

fn baseline_target(&self) -> Option<f32>

If the widget positions its child by the child’s baseline (crate::Baseline), the distance from the top of this box at which that baseline should land. None = not a baseline box.

Source

fn clip_path(&self) -> Option<&Path>

If the widget clips its child to an arbitrary path (ClipPath), returns the path in local coordinates (origin at the box’s top-left corner). The walk offsets it to the screen and wraps it in a layer whose mask (the path) erases the outside. Takes priority over Widget::clip_shape. None = no path clip. See crate::ClipPath.

Source

fn dismissible(&self) -> Option<DismissSpec>

If the widget is a dismissible item (crate::Dismissible), its configuration for this frame. The shell gives a mostly-sideways drag on it to the dismissal and a mostly-up-and-down one to the enclosing scrollable. None = not dismissible.

Source

fn on_dismissed(&self, _direction: DismissDirection) -> Option<Msg>

The message a dismissed item dispatches, once it has flown out and its gap has closed. None = the swipe is shown but removes nothing.

Source

fn sheet(&self) -> Option<&SheetSpec>

If the widget is the moving panel of a crate::DraggableScrollableSheet, its configuration for this frame. The layout makes it as tall as the retained height, and the shell shares a finger on it between the sheet and the scroll areas inside. None = not a sheet.

Source

fn on_sheet_dismissed(&self) -> Option<Msg>

The message a sheet dispatches once it has been lowered to nothing. None = it cannot be dismissed, or says nothing when it is.

Source

fn refresh(&self) -> Option<RefreshSpec>

If the widget is a refresh area (crate::RefreshIndicator), its configuration for this frame. Any scrollable inside it routes the movement its physics refuses at the top edge into the pull, instead of into the overscroll glow. None = not a refresh area.

Source

fn on_refresh(&self) -> Option<Msg>

The message a refresh area dispatches when an armed pull is released. None = the pull is shown but asks for nothing, which is what an area still waiting for its on_refresh looks like.

Source

fn barrier(&self) -> Option<ModalBarrier>

What the widget withholds from the frame on behalf of its whole subtree: input targets, primitives, accessibility nodes. The walk visits the subtree normally and then discards whatever it added to the selected registries, so a target registered deep inside is caught just as surely as one at the top. None = nothing withheld (the default). See crate::ModalBarrier, crate::IgnorePointer, crate::AbsorbPointer, crate::Visibility, crate::ExcludeSemantics.

Source

fn interactive(&self) -> Option<(f32, f32)>

If the widget is an interactive viewport (InteractiveViewer), returns its scale bounds (min, max). The paint walk renders its child in a transformed layer (retained scale + translation, clipped to the viewport); the shell routes drag → pan and wheel/pinch → zoom. None = not an interactive viewport. See crate::InteractiveViewer.

Source

fn fitted(&self) -> Option<BoxFit>

If the widget fits its child to its box (FittedBox), returns the frus_core::BoxFit: the walk measures the child at its natural size, scales it according to the fit and centres it (composited layer, hit-test through M⁻¹). None = not a fitter. See crate::FittedBox.

Source

fn rotated_quarter_turns(&self) -> Option<i32>

If the widget rotates its child by quarter turns (RotatedBox), returns the number of quarters. Unlike Transform, this affects layout: the box swaps its dimensions for an odd number. None = not a RotatedBox. See crate::RotatedBox.

Source

fn navigator(&self) -> Option<(f32, bool)>

If the widget is a screen navigator, returns (progress, push?). Its children ([screen] or [outgoing, incoming]) are rendered full-window with a sliding transition.

Source

fn navigator_gesture(&self) -> bool

Whether a finger drives the navigator’s transition — a back gesture — so that it follows the finger linearly (milestone 620).

Source

fn navigator_clips(&self) -> bool

Whether a navigator clips its pages to its own box. true, which is the reference’s default (Clip.hardEdge) and the only sane one: a screen sliding in comes from outside the box and has to stop at its edge.

Consulted only inside the navigator branch of the walk, so it costs nothing for every other widget.

Source

fn navigator_retained(&self) -> usize

How many of a navigator’s first children are kept but not shown: the pages under the one on show. They are built, so what their components hold survives, and they are not laid out, drawn or given input. 0, the default, is a navigator that shows every page it holds.

Source

fn on_long_press(&self) -> Option<Msg>

Message emitted by a long press (a press held ~500 ms without movement). The long press pre-empts the click: the release that follows does not emit on_click.

Source

fn on_double_tap(&self) -> Option<Msg>

Message emitted by a double tap: two taps on this widget in quick succession (within 300 ms and 100 px of each other, the reference’s numbers). While one is possible, a first tap’s on_click waits out those 300 ms, so that the second tap of a double tap is not also a tap.

Source

fn on_secondary_tap(&self) -> Option<Msg>

Message emitted by a secondary tap: a click of the secondary mouse button, usually the right one.

Source

fn pointer_listener(&self) -> bool

Whether this widget hears the pointer’s raw events (milestone 586): a press inside it, and then that pointer wherever it goes until it lifts; and a mouse’s hover.

Source

fn on_pointer_event(&self, _event: ListenerEvent) -> Vec<Msg>

The messages for one raw event of the pointer, on a widget that is a pointer_listener. Several, when listeners wrap each other at the same place.

Source

fn hover_region(&self) -> Option<HoverRegion>

Whether this widget is a region the mouse enters and leaves (milestone 583), and how: the cursor it asks for while the pointer is over it, and whether it hides the regions behind it. None for anything that is not one.

Source

fn on_hover_event(&self, _event: HoverEvent) -> Option<Msg>

Message for the pointer entering, moving over or leaving this region — one whose hover_region is set.

Source

fn pan_axis(&self) -> Option<PanAxis>

Which way this widget takes a drag, if it takes one at all (milestone 582): the shell then reports it through on_pan. Inside a scroll, a drag along the scroll’s axis stays the scroll’s unless this axis claims it.

Source

fn on_pan(&self, _event: PanEvent) -> Option<Msg>

Message for one moment of a drag — its start, a movement, its end — on a widget whose pan_axis is set.

Source

fn wants_title_bar(&self) -> bool

Whether this widget wants the title bar’s line for itself (milestone 640): a WindowMenuBar’s row. The shell gives it the line where the system allows it.

Source

fn title_bar_role(&self) -> Option<TitleBarRole>

What this widget is to the system on the title bar’s line, which acts on it: the window’s icon or its three buttons (milestone 640).

Source

fn pan_value(&self, _event: PanEvent, _value: f32, _rtl: bool) -> Option<f32>

A drag that moves this widget’s own animated value (anim_target) — a switch’s thumb following the finger (milestone 638). Given a moment of the drag, the value now and whether the text runs right to left, the value to hold it at; None leaves it alone. The shell holds the value there while the finger is down, and when it lifts lets it settle from there, asking on_value_release what that means.

Source

fn on_value_release(&self, _value: f32) -> Option<Msg>

Message for a drag that moved this widget’s value letting go at value — a switch flips when its thumb was let go past half way (milestone 638).

Source

fn on_key(&self, _key: &Key) -> KeyResponse<Msg>

Key received while bubbling leaf→root: the focused widget gets it first, then each ancestor as long as the response is Ignored. (E.g. an OverlayPortal consumes Escape to close itself.)

Source

fn measure(&self, _theme: &Theme) -> Option<MeasureFn<'_>>

Measure under constraints: for a widget whose size depends on the space offered (a paragraph that wraps…), returns the closure wired into taffy. None = size fixed by style(). Contract: must be Some if and only if Widget::measure_key is.

The theme comes in because the measurement has to agree with the paint. A text that takes its size from an inherited style must be measured at that size too; measured at one size and drawn at another, every box on the screen is the wrong height at once, and nothing in the picture says which of the two numbers is wrong.

Source

fn measure_key(&self, _theme: &Theme) -> Option<u64>

Fingerprint of the content Widget::measure depends on (text, style…), mixed into the relayout fingerprint: without it, two different contents with the same style would be conflated by the cache and would keep a stale geometry. Contract: Some if and only if measure() is.

Whatever the theme contributes to the measurement belongs in here as well — a cache key that ignores half of its inputs is a stale layout waiting for the subtree’s style to change.

Trait Implementations§

Source§

impl<Msg> Widget<Msg> for Box<dyn Widget<Msg>>

Lets an already boxed widget be composed where an impl Widget is expected (e.g. Flex::child). Delegates everything to the contained widget.

Source§

fn style(&self) -> Style

Layout style (handed to frus-layout).
Source§

fn style_themed(&self, theme: &Theme) -> Style

The widget’s style once the theme has had its say — the layout half of the caller ?? theme ?? framework chain. Read more
Source§

fn theme_override(&self, inherited: &Theme) -> Option<Box<Theme>>

The theme this widget imposes on itself and its subtree, given the one it inherits. None — the default — means “whatever came down from above”, which is what every widget but crate::Themed answers. Read more
Source§

fn media_override(&self, inherited: MediaQuery) -> Option<MediaQuery>

The surface this widget imposes on itself and its subtree, given the one it inherits. None — the default — means “whatever came down from above”, which is what every widget but MediaScope answers. Read more
Source§

fn scaffold_override(&self) -> Option<ScaffoldInfo>

The shell this widget imposes on its subtree: what a Scaffold knows about itself and its slots do not. Read more
Source§

fn scroll_behavior_override(&self) -> Option<ScrollBehavior>

The ScrollBehavior this widget puts in force for its subtree, or None — the default — for whatever came down from above. Only ScrollConfiguration answers otherwise. Applied by the same four walks as Self::scaffold_override: the scrollables under it record what it decides when they are registered (milestone 616).
Source§

fn build_themed(&self, theme: &Theme)

Builds this widget’s subtree from the ambient theme, for the widgets that defer that decision — see ThemeBuilder. Does nothing by default, which is what all but a handful of widgets want. Read more
Source§

fn build_in(&self, id: WidgetId, runtime: &Runtime, theme: &Theme)

Self::build_themed, for the few widgets that also need who they are and what the frame remembers to compose their subtree. An AnimatedSwitcher keeps what it is letting go of in the runtime, under its own identity, and that is reachable nowhere else before its children are read. Read more
Source§

fn expand(&self, id: WidgetId, runtime: &Runtime, theme: &Theme)

Builds what this node stands for, before anything else is asked of it. Read more
Source§

fn switches(&self) -> bool

Whether this node is an AnimatedSwitcher. An identity is a position, so a switcher and the widget that comes to stand where it stood have the same one: this is how the runtime tells the switcher still being there from its having gone, and forgets what it kept for it.
Source§

fn system_ui_style(&self) -> Option<SystemUiOverlayStyle>

What the system bars over this widget should look like — see AnnotatedRegion. None for every widget but that one; a transparent wrapper forwards it, or a keyed region would say nothing.
Source§

fn repaint_boundary(&self) -> bool

If true, this widget is a repaint boundary: its subtree is cached (primitives + interaction maps) and reused as is as long as its geometry and the interaction state of its descendants do not change — a widget animating elsewhere no longer forces it to repaint. See crate::Container::repaint_boundary and paintcache.rs.
Source§

fn debug_name(&self) -> &'static str

Short name of the widget — for the inspector and diagnostic dumps. Defaults to the name of the concrete type, without module path or generics (each implementation gets its own monomorphised copy of this default body). Transparent wrappers (Box, crate::Keyed…) delegate to their content.
Source§

fn semantics(&self) -> Option<SemanticsProperties>

The widget’s accessibility annotation (role, label, value, state), exposed to assistive technologies through the AccessKit tree. None = no semantics of its own (a layout container — its children, though, may have some). See frus_core::SemanticsProperties.
Source§

fn describes(&self) -> Option<Description>

What this widget says about its child’s subtree, when it knows something the child cannot know about itself — the crate::Semantics wrapper, and nothing else so far. Read more
Source§

fn children(&self) -> &[Box<dyn Widget<Msg>>]

The widget’s children (possibly empty).
Source§

fn paint(&self, bounds: Rect, status: Status, theme: &Theme, scene: &mut Scene)

Paints the widget’s own decoration, according to its status (hover / focus / cursor / selection) and the current theme.
Source§

fn on_click(&self) -> Option<Msg>

Message to emit on click (None = not clickable).
Source§

fn opaque(&self) -> bool

Whether a press that lands on this widget and on nothing inside it stops here. Read more
Source§

fn positional_click( &self, local_x: f32, local_y: f32, width: f32, height: f32, ) -> Option<Msg>

Positional click: a message emitted according to where the click landed (local coordinates from the widget’s top-left corner, within the width × height box), taking priority over on_click. For clickable sub-regions — e.g. the suffix icon of a crate::TextField (clear / reveal) or a chart point (milestone 221). None (the default) = no sub-region; the shell falls back to on_click.
Source§

fn cursor_icon( &self, local_x: f32, local_y: f32, width: f32, height: f32, ) -> Option<Cursor>

Shape of the system cursor wanted at the local position (local_x, local_y) inside the widget’s width × height box (milestone 205): Some(Cursor::Pointer) over a clickable sub-region (a suffix icon…), None (the default) = no opinion, the shell keeps the default cursor. Does not affect clicking; this is purely the pointer’s appearance on hover.
Source§

fn key(&self) -> Option<u64>

Stable identity key (independent of the position among siblings). None = positional identity. See crate::Keyed.
Source§

fn on_edit(&self, edit: &mut Edit, key: &Key) -> Option<Msg>

Applies a key to the focused widget: mutates the edit state (cursor/selection) and returns a message if the value changes.
Source§

fn cursor_at( &self, local_x: f32, local_y: f32, width: f32, scroll_cursor: usize, ) -> Option<usize>

Cursor index matching a local position (px from the widget’s top-left corner) — for placing the caret on click. local_y picks the line in a multi-line field (ignored on a single line). Read more
Source§

fn text_metrics( &self, width: f32, cursor: usize, ) -> Option<(f32, f32, f32, f32)>

SingleChildScrollView metrics of a multi-line field, for a widget width and a cursor: (content height, visible box height, caret top, caret height), in content space (px). The shell uses them to register the scrollable region and to keep the caret in view. None otherwise.
Source§

fn text_viewport(&self, rect: Rect) -> Option<Rect>

Frame (input box) of a multi-line field within its rect — the area where the text scrolls, below the label. Used to place the scrollbar and the scrollable region exactly on the box. None otherwise.
Source§

fn caret_vertical( &self, width: f32, cursor: usize, down: bool, page: bool, goal_x: Option<f32>, ) -> Option<(usize, f32)>

Moves the caret vertically in a multi-line field and returns (new index, visual column used). Read more
Source§

fn selected_text(&self, edit: &Edit) -> Option<String>

The currently selected text (for copy/cut).
Source§

fn text_value(&self) -> Option<&str>

The field’s whole value, if this widget is a text field — to give the IME its input context (suggestions). None otherwise.
Source§

fn takes_typing(&self) -> bool

Whether this widget takes typing: a field that can be changed, which is what the software keyboard is for. A text field that may only be read and selected — a read_only one, a Text made selectable — answers false: it has a caret and a selection, and no use for a keyboard sliding up over the words being read. Read more
Source§

fn selection_text(&self) -> Option<&str>

The words this widget shows, if it takes part in a SelectionArea: a Text, and nothing that is not made of words. The walk registers such a widget as a text stop when it is inside an area, so that a selection can begin, end and pass through it.
Source§

fn region_toolbar( &self, context: ToolbarContext, width: f32, range: (usize, usize), ) -> Option<(Rect, &dyn Widget<Msg>)>

The bar over the part of a selection area’s selection that lies in this widget — range, in characters — for context, and the box it is placed against in local coordinates, for a widget width wide. None for anything that is not a text, or when the list for context is empty.
Source§

fn selection_grip( &self, width: f32, index: usize, start: bool, ) -> Option<SelectionHandle>

The handle that hangs from character boundary index of this widget’s words — the start handle when start, the end handle otherwise — in local coordinates, for a widget width wide: where it is painted, and so where a finger takes it. None for anything that is not a text.
Source§

fn area_toolbar( &self, context: ToolbarContext, ) -> Option<Option<&dyn Widget<Msg>>>

The bar a SelectionArea offers over its selection, for context, when the application has said what it holds (SelectionArea::selection_toolbar): Some of the bar, or Some(None) for no bar at all. None for anything else — and for an area that was told nothing — whose texts then offer Copy and Select all.
Source§

fn selection_hit(&self, local_x: f32, local_y: f32, width: f32) -> Option<usize>

The character boundary of selection_text nearest a local position (px from the widget’s top-left corner) in a box width wide — the layout the widget was drawn with, which is what a press is hit against.
Source§

fn replace_value(&self, value: String) -> Option<Msg>

The message that puts value in this field: the one typing would have produced, for a value the framework restores rather than the user typing it. Read more
Source§

fn word_at(&self, index: usize) -> Option<(usize, usize)>

Range (start, end) of the word around the given index (for double-click).
Source§

fn selection_handles( &self, width: f32, edit: &Edit, scroll_y: f32, ) -> Option<[SelectionHandle; 2]>

The two handles of the selection in edit, start then end, for a field width wide whose content is scrolled down by scroll_y — where they are painted, and so where a finger takes them. None when there is no selection, or this is not a text field.
Source§

fn selection_toolbar(&self, context: ToolbarContext) -> Option<&dyn Widget<Msg>>

The bar this field shows over its selection (Cut, Copy, Paste, Select all — see crate::ToolbarItem) for context, or None when there is none to show: this is not a text field, or the application’s list for that context is empty. Read more
Source§

fn selection_anchor( &self, width: f32, edit: &Edit, scroll_y: f32, ) -> Option<Rect>

The box the bar is placed against, in the field’s local coordinates: the selection’s, or the caret’s when nothing is selected. Like selection_handles it is the paint’s own geometry.
Source§

fn edit_action(&self) -> Option<EditAction>

The editing action pressing this widget performs on the focused field, for a button of the bar that carries no message (see crate::EditAction).
Source§

fn focusable(&self) -> bool

If true, the widget can take keyboard focus (click or Tab).
Source§

fn autofocus(&self) -> bool

If true, a focusable widget takes the focus when it appears: a menu’s first row when the menu opens, a field on a screen made to type into (milestone 605). Where the focus came from is remembered, and it goes back there when this one goes.
Source§

fn shortcut_bindings(&self) -> &[(KeyStroke, Intent)]

Keystrokes this subtree binds to intents — see crate::Shortcuts.
Source§

fn shortcut_callbacks(&self) -> &[(KeyStroke, Msg)]

Keystrokes this subtree binds straight to messages — see crate::CallbackShortcuts.
Source§

fn action_bindings(&self) -> &[(Intent, Msg)]

Intents this subtree answers — see crate::Actions.
Source§

fn action_listeners(&self) -> &[(Intent, Msg)]

Intents this subtree watches without answering — see crate::ActionListener.
Source§

fn on_keystroke(&self) -> Option<Rc<dyn Fn(KeyStroke) -> Option<Msg>>>

Every keystroke reaching this subtree, handed to a closure — see crate::KeyboardListener. None (the default) is not a listener.
Source§

fn descendants_focusable(&self) -> bool

If false, nothing inside this subtree can take focus — the reference’s ExcludeFocus. A dimmed panel behind a sheet is still drawn and still measured; it simply stops being somewhere Tab can land.
Source§

fn focus_skip_traversal(&self) -> bool

If true, this subtree’s focus stops are skipped by Tab while remaining focusable by a click — the reference’s ExcludeFocusTraversal. The two are separate questions: a toolbar button may be reachable with the pointer and still not belong in the keyboard’s order.
Source§

fn focus_order(&self) -> Option<f32>

A traversal order for this subtree’s focus stops, smallest first — the reference’s NumericFocusOrder. None leaves them in tree order, which is where everything sits until someone says otherwise.
Source§

fn focus_group(&self) -> bool

If true, this subtree is a traversal group: an order set inside it is resolved among its own members and nowhere else, so a reordered dialog does not reshuffle the page behind it.
Source§

fn autofill_hints(&self) -> &[AutofillHint]

What this field is for, so the platform can fill it in — see AutofillHint. Empty (the default) is a field that takes no part in autofill at all. Read more
Source§

fn autofill_group(&self) -> bool

If true, this subtree’s fields are one form — the reference’s AutofillGroup. A service shown a password with no username beside it has nothing to save the pair under.
Source§

fn draws_own_focus(&self) -> bool

If true, the widget draws its focus indicator itself (the driver then does not stroke the generic ring). E.g. TextField.
Source§

fn draggable(&self) -> bool

If true, the widget responds to pointer dragging (sliders, handles).
Source§

fn drag_track(&self) -> DragTrack

Where along a draggable widget its drag lands (milestone 648): how far in from each end the travel starts, and whether it runs from the right in a right-to-left reading direction. The fraction on_drag and its edges are given is measured along that travel. The default is the whole width, left to right.
Source§

fn on_drag(&self, fraction: f32) -> Option<Msg>

Message produced while dragging, fraction being the relative horizontal position (0.0..=1.0) within the widget’s bounds.
Source§

fn on_drag_start(&self, fraction: f32) -> Option<Msg>

Message produced when a value drag begins — on the press, before the first on_drag. Read more
Source§

fn on_drag_end(&self, fraction: f32) -> Option<Msg>

Message produced when a value drag ends — on the release, with the fraction the pointer finished on. Read more
Source§

fn on_drag_delta(&self, dx: f32) -> Option<Msg>

Message produced by a horizontal drag expressed as a delta: dx is the movement (logical px) since the last event. For handles that accumulate (column resizing), unlike on_drag (an absolute fraction, e.g. a slider). The shell tries it before on_drag; a widget implements only one of the two.
Source§

fn reorder_index(&self) -> Option<usize>

If this widget is a reorderable header, its column index. The shell uses it to identify the source column (on press) and the target column (under the pointer on release) of a reordering drag.
Source§

fn on_reorder(&self, to: usize) -> Option<Msg>

Message emitted when this header (the source) is dropped on column to. The widget knows its own index and the on_reorder(from, to) callback.
Source§

fn reorder_draggable(&self) -> bool

Can this reorderable be picked up as a drag source? true by default for every reorderable. A target-only slot — the drop zone at the end of a Kanban column — returns false: a card can be dropped there, not lifted from it (otherwise the drag would raise an empty ghost that moves nothing).
Source§

fn reorder_droppable(&self) -> bool

Can this reorderable be dropped onto? true by default, and the mirror image of reorder_draggable: a source-only grip — a list row’s drag handle — returns false. Read more
Source§

fn reorder_announcement(&self, to: usize) -> Option<String>

What to say to a screen reader once this reorderable has been moved to to — the spoken counterpart of the ghost, for someone who cannot see it land. Read more
Source§

fn reorder_axis(&self) -> ReorderAxis

Movement axis of this reorderable (default ReorderAxis::Horizontal): the shell orients the drag preview (ghost + insertion indicator) accordingly. Kanban cards return ReorderAxis::Vertical.
Source§

fn reorder_inserts(&self) -> bool

Is a horizontal reorderable dropped between its neighbours, like a list’s row, rather than into the place of the one under the pointer, like a table’s column? false by default, which is the table. Read more
Source§

fn announce(&self) -> Option<String>

Text to announce to the screen reader when this widget is activated (mouse click or Enter/Space) — a live region reads it out loud. Describes the effect the activation produced (“Sorted by Name ascending”, “All rows selected”), for the blind user who cannot perceive the visual change. None = nothing to announce (the default).
Source§

fn stack(&self) -> bool

If true, the widget is a stack: its children are superimposed layers (the same box), rendered in order (the last one on top).
Source§

fn sticky_header(&self) -> bool

If true, the widget is a section with a sticky header (crate::StickyHeader): its first child is painted, and takes taps, at the top of what is visible of the section, over the second (milestone 602).
Source§

fn custom_layout(&self) -> Option<CustomLayout<'_>>

If the widget places its children with a function — a crate::CustomMultiChildLayout — the function and one key per child. The children are then laid out and placed in the walk, by the function, and not in this node’s layout (milestone 601).
Source§

fn continuous(&self) -> bool

If true, the widget animates continuously (driven by time, not by a target): the framework keeps redrawing. E.g. CircularProgressIndicator.
Source§

fn scroll_content(&self) -> Option<&dyn Widget<Msg>>

If the widget is a scrollable container, returns its content.
Source§

fn virtual_list(&self, viewport: Size) -> Option<VirtualList<'_, Msg>>

If the widget is a virtualised list, returns its description (item count, height, factory). Only the visible items are built.
Source§

fn page_view(&self) -> Option<PagedView<'_, Msg>>

If the widget is a paged view, returns its description (page count, axis, factory). Like a virtualised list, only the visible pages are built.
Source§

fn intrinsic(&self) -> Option<(IntrinsicAxis, Option<f32>)>

If the widget takes one axis from its content’s preferred size, returns that axis and the step its measurement is rounded up to. See crate::Intrinsic.
Source§

fn overflow_box(&self) -> Option<Overflow>

If the widget lays its child out to constraints of its own, which the child may exceed, returns them. See crate::OverflowBox.
Source§

fn constraints_transform(&self) -> Option<ConstraintsTransform>

The box this widget gives its child as a function of the box it was offered, with the child laid out in it separately and the box then sized to what came back. None — the default — means the child shares this node’s layout, as everything ordinary does. See crate::ConstraintsTransformBox.
Source§

fn animated_size(&self) -> Option<SizeAnimation>

If the box this widget’s constraints_transform makes follows its child’s size over time rather than at once, how (milestone 594). See crate::AnimatedSize.
Source§

fn size_factor(&self) -> Option<(f32, f32)>

If the box this widget’s constraints_transform makes is a multiple of its child’s size — (across, down), 1 for as big as the child — the multiples (milestones 596 and 597). See crate::SizeTransition and crate::Aligned::width_factor.
Source§

fn clips_to_box(&self) -> bool

Whether the box this widget’s constraints_transform makes cuts its child to itself. A reveal does; an anchor with a factor lets its child spill (milestone 597).
Source§

fn hero_tag(&self) -> Option<u64>

If this widget is a shared element, its tag. Two heroes with the same tag on the two sides of a route transition are one thing in two places. See crate::Hero.
Source§

fn drag_payload(&self) -> Option<u64>

If this widget can be picked up and dropped elsewhere, what it carries. See crate::Draggable.
Source§

fn drag_needs_long_press(&self) -> bool

Does this item lift on a long press rather than on the first movement? The answer inside a scrollable, where a plain drag belongs to the scroll. Read more
Source§

fn drag_ghost_opacity(&self) -> f32

How solid the item left behind looks while a copy of it is being dragged.
Source§

fn on_dropped(&self, accepted: bool) -> Option<Msg>

Message sent when a drag of this item ends, true if a target took it.
Source§

fn drop_zone(&self) -> bool

Is this widget a drop target? See crate::DragTarget.
Source§

fn accepts_drag(&self, payload: u64) -> bool

Would this target take payload? Only asked of a drop target.
Source§

fn on_drop(&self, payload: u64) -> Option<Msg>

Message sent when an accepted item is dropped on this target.
Source§

fn on_page_changed(&self, page: usize) -> Option<Msg>

Message sent by a paged view when the page on screen changes.
Source§

fn on_scroll(&self, position: ScrollPosition) -> Option<Msg>

Message sent by a scroll region when its offset changes — the reading half of crate::ScrollPosition. Read more
Source§

fn scroll_grain(&self) -> f32

How far this region must move before it says so again, in pixels; 0 — the default — reports every change. Read more
Source§

fn layout_builder(&self) -> Option<&dyn Fn(Size) -> Box<dyn Widget<Msg>>>

If the widget builds its content from its actual box, returns the size → widget factory. The content is built on the fly: no retained state and no overlay (like a virtualised list item).
Source§

fn scroll_overlay(&self) -> Option<&OverlayBuilder<Msg>>

If the widget draws something over its scroll region, returns the offset → overlay factory. See crate::ScrollOverlay. Read more
Source§

fn scroll_axis(&self) -> Axis

SingleChildScrollView axis (or axes), for a scrollable container.
Source§

fn scroll_physics(&self) -> Option<ScrollPhysics>

The edge and fling behaviour of a scrollable container, when this widget wants one in particular. None — the usual answer — leaves the choice to the application, which defaults to what the platform does.
Source§

fn scrollbars(&self) -> Option<Scrollbars>

Whether this area draws a scrollbar, when it wants its own answer rather than the application’s. None — the default — follows the application, which follows the platform. See crate::Scrollbars.
Source§

fn thumb_visibility(&self) -> Option<bool>

Keep this area’s scrollbar on screen, instead of letting it fade away when the area stops moving (scrollbar.dart:214). Read more
Source§

fn ime(&self) -> Ime

What the software keyboard should be, when this widget is the focused editable one. Read more
Source§

fn overlay(&self) -> Option<(&dyn Widget<Msg>, Placement)>

If the widget is a portal, returns its floating content and its placement.
Source§

fn overlay_dismiss(&self) -> Option<Msg>

Message emitted when the scrim of a modal is clicked (dismissal), if any.
Source§

fn overlay_scrim(&self, theme: &Theme) -> Option<Color>

The colour of the scrim behind this widget’s modal overlay, when it wants one in particular. None — the usual answer — leaves it to the scheme’s scrim role at the framework’s own opacity. Read more
Source§

fn overlay_traps_focus(&self) -> bool

If true, this widget’s anchored overlay (a menu…) traps focus: Tab and the arrow keys cycle within its focusables while it is open (the keyboard pattern of menus). Modal (scrimmed) overlays already trap by default; a tooltip or an autocomplete list (focus stays on the field) do not. Default: false.
Source§

fn anim_target(&self) -> Option<f32>

Target of the widget’s own animated value (e.g. 1.0 for a switch that is on, 0.0 for off). The runtime drives the retained value towards this target and hands it back through Status::value. None = no animated value.
Source§

fn anim_transform(&self) -> Option<TransformValues>

Target transform of an animated one (Transform::animated): the runtime tweens the scales and the turn through anim_duration/anim_curve and hands the interpolated value back through Runtime::anim_transform, which the paint walk reads in place of the static transform_scale/transform_rotate. None = the transform does not move. Read more
Source§

fn anim_duration(&self) -> f32

Duration (seconds) of the animated value’s transition (anim_target). Default: the framework’s standard duration.
Source§

fn anim_curve(&self) -> Curve

Easing curve of the animated value’s transition (anim_target). Default: linear.
Source§

fn opacity_group(&self) -> Option<f32>

If the widget is an opacity group, returns the (target) opacity [0,1] applied to its whole subtree as one: the paint walk wraps its primitives in a composited layer at that opacity — no double-blending where they overlap. None = not a group. Combined with anim_target, the opacity animates (a group fade).
Source§

fn anim_color(&self) -> Option<Color>

Target background colour of an animated background (Container::animated_color): the runtime tweens it (through anim_duration/anim_curve) and hands the interpolated value back in Status::anim_color. None = no animated colour.
Source§

fn anim_size(&self) -> Option<Size>

Target size of an animated size (Container::animated_size): the runtime tweens it (through anim_duration/anim_curve) and the interpolated size is injected at layout (see effective_style). None = fixed size.
Source§

fn anim_radius(&self) -> Option<BorderRadius>

Target corner radius of an animated radius (Container::animated_radius): the runtime tweens it and hands the interpolated value back in Status::anim_radius. None = fixed radius.
Source§

fn anim_padding(&self) -> Option<Insets>

Target padding of an animated padding (Container::animated_padding): the runtime tweens it and the interpolated padding is injected at layout (see effective_style). None = fixed padding.
Source§

fn anim_offset(&self) -> Option<(f32, f32)>

The pair of fractions this node’s offset rule is made of, animated: an alignment’s two fractions, or a slide’s. None — the default — leaves the rule reading the widget’s own numbers. Read more
Source§

fn anim_pins(&self) -> Option<Positioning>

Target pins of an animated stack layer (crate::AnimatedPositioned): the runtime tweens them and the interpolated pins are read where the stack lays its layers out. None — the default — leaves Widget::positioned alone. Read more
Source§

fn anim_fractions(&self) -> Option<(Option<f32>, Option<f32>)>

Target fractions of an animated share of the parent (FractionallySizedBox::animated), as (width factor, height factor): the runtime tweens them and the interpolated pair is injected at layout (see effective_style), like the size and the padding. None = fixed factors. Read more
Source§

fn anim_text_style(&self) -> Option<TextStyle>

Target text style an animated subtree is heading for (AnimatedDefaultTextStyle). None = the subtree inherits whatever it inherits. Read more
Source§

fn alignment_geometry(&self) -> Option<AlignmentGeometry>

Alignment of the single child within the box: the walk offsets the child through the free space according to the alignment’s fractions, resolved against the reading direction (physical or directional — see frus_core::AlignmentGeometry). Being continuous, a Tween<Alignment> read in view() slides the child. None = default flex placement.
Source§

fn transform_translate(&self) -> Option<(f32, f32)>

Paint offset (dx, dy) applied to the widget’s whole subtree: the render and the hit-test are offset without touching layout (siblings do not move, the child may overflow its box). Continuous → a Tween read in view() slides the subtree. None = no offset. See crate::Transform.
Source§

fn translate_fraction(&self) -> Option<(f32, f32)>

Paint offset as a fraction of the child’s own size (fx, fy): (0.5, 0.0) slides the subtree half its own width to the right. Added to Widget::transform_translate, and offsetting the render and the hit-test the same way, without touching layout. None = no offset. Read more
Source§

fn transform_scale(&self) -> Option<(f32, f32, Alignment)>

Paint scaling (sx, sy, pivot) of the whole subtree: the render and the hit-test are scaled — per axis — around the pivot (a frus_core::Alignment within the box), without touching layout. Stays axis-aligned (a scaled rect is still a rect). None = no scaling. See crate::Transform.
Source§

fn transform_rotate(&self) -> Option<(f32, Alignment)>

Paint rotation (angle, pivot) of the whole subtree: the subtree is painted rotated by angle radians (clockwise) around the pivot (a frus_core::Alignment within the box), without touching layout. The render goes through a rotated composited layer; the hit-test counter-rotates the point. None = no rotation. See crate::Transform.
Source§

fn clip_shape(&self) -> Option<ClipShape>

Shape clip of the whole subtree: the paint walk wraps its primitives in a composited layer whose frus_core::ClipShape (rounded corners, ellipse) modulates the alpha — whatever falls outside the shape is erased, edges antialiased. None = no shape clip. See crate::ClipRRect, crate::ClipOval.
Source§

fn clip_path(&self) -> Option<&Path>

If the widget clips its child to an arbitrary path (ClipPath), returns the path in local coordinates (origin at the box’s top-left corner). The walk offsets it to the screen and wraps it in a layer whose mask (the path) erases the outside. Takes priority over Widget::clip_shape. None = no path clip. See crate::ClipPath.
Source§

fn layer_filter(&self, cx: FilterContext) -> Option<LayerFilter>

The pixel effects this widget applies to its whole subtree: a blur, a colour transform, a mask, or a filter over what is painted underneath. The paint walk drains the subtree into a composited layer and hands the filter to the renderer, exactly as it does for an opacity group or a shape clip. Read more
Source§

fn text_baseline(&self, theme: &Theme) -> Option<f32>

The widget’s own text baseline: the distance from the top of its box down to the line its letters sit on. None — the default — means this widget has no text of its own, and whatever is inside it answers instead. Read more
Source§

fn ignores_baseline(&self) -> bool

true when this subtree should be left out of a parent’s baseline alignment: it has a baseline, and the parent is to pretend it does not. An icon beside a label, where the label is what the row should line up on. See crate::IgnoreBaseline.
Source§

fn baseline_target(&self) -> Option<f32>

If the widget positions its child by the child’s baseline (crate::Baseline), the distance from the top of this box at which that baseline should land. None = not a baseline box.
Source§

fn fill_axes(&self, theme: &Theme) -> FillAxes

The axes this widget asks to fill: on each, it takes the room the parent leaves it rather than shrink-wrapping its children. FillAxes::NONE means shrink-wrap on both. Read more
Source§

fn soft_extent(&self) -> FillAxes

The axes on which this widget’s size is only a default (milestone 590): the room on offer replaces it wherever the widget is asked to fill that axis and the layout can grant it — alone in a box, or across a row or a column. Where it cannot, along a line shared with other children, the default stands. Read more
Source§

fn main_axis_floor(&self, theme: &Theme) -> Option<f32>

The width below which this widget must not be squeezed when its parent runs horizontally — a line of text that would rather run past the end of a row than be folded into a column of single words. None means squeeze freely. Read more
Source§

fn tile_shape(&self) -> Option<f32>

If this container gives all of its children the shape of a tile, the width / height ratio to impose on each of them. None = each child keeps its own shape. Read more
Source§

fn positioned(&self) -> Option<Positioning>

If this is a layer pinned against its crate::Stack’s edges (crate::Positioned), what it pins. None = an ordinary layer, sized and placed by the stack’s own fit and alignment. Read more
Source§

fn stack_fit(&self) -> StackFit

How this stack sizes its unpinned layers (crate::StackFit). Unset, Passthrough: each is handed the stack’s box, and one with a size of its own keeps it. Meaningless unless Widget::stack is true.
Source§

fn stack_measured(&self) -> bool

Whether this stack is as big as its largest unpinned layer (milestone 639), as crate::Stack is, rather than the size its own style says. Meaningless unless Widget::stack is true.
Source§

fn stack_clips(&self) -> bool

Whether this stack cuts its layers at its edges. Unset, it does.
Source§

fn stack_direction(&self) -> Option<TextDirection>

The reading direction this stack resolves its alignment and its layers’ start and end pins in, when it names one. Unset, the theme’s.
Source§

fn stack_visible(&self) -> Option<usize>

Which layer of this stack is shown: the one at that index paints and takes input, and every other one is laid out and then silenced — not drawn, not clickable, not read out. None, the default, shows all of them. Read more
Source§

fn scroll_reverse(&self) -> bool

Whether this scrollable runs from the far end (crate::SingleChildScrollView::reverse): the content is anchored to the end of the viewport and offsets are counted from there. Meaningless unless Widget::scroll_content is Some.
Source§

fn keep_visible(&self, size: Size, theme: &Theme) -> Option<KeepVisible>

The box this widget asks the scroll region around it to keep in view, in its own coordinates, with a key naming which box it is. Read more
Source§

fn scroll_padding(&self) -> Insets

The insets a scrollable area puts around its content, inside the viewport. Read more
Source§

fn backdrop_group(&self) -> bool

true when this widget is a backdrop group: the backdrops below it that ask to be shared are filtered once between them. See crate::BackdropGroup.
Source§

fn ink(&self, theme: &Theme) -> Option<InkStyle>

If the widget takes ink — the splash a tap leaves on a material surface — the shape and colour to splash in. None = no ink, which is the default: a widget has to ask. Read more
Source§

fn foreground(&self, theme: &Theme) -> Option<BoxDecoration>

A decoration painted over this widget’s children rather than behind them: the reference’s foregroundDecoration. Read more
Source§

fn barrier(&self) -> Option<ModalBarrier>

What the widget withholds from the frame on behalf of its whole subtree: input targets, primitives, accessibility nodes. The walk visits the subtree normally and then discards whatever it added to the selected registries, so a target registered deep inside is caught just as surely as one at the top. None = nothing withheld (the default). See crate::ModalBarrier, crate::IgnorePointer, crate::AbsorbPointer, crate::Visibility, crate::ExcludeSemantics.
Source§

fn dismissible(&self) -> Option<DismissSpec>

If the widget is a dismissible item (crate::Dismissible), its configuration for this frame. The shell gives a mostly-sideways drag on it to the dismissal and a mostly-up-and-down one to the enclosing scrollable. None = not dismissible.
Source§

fn on_dismissed(&self, direction: DismissDirection) -> Option<Msg>

The message a dismissed item dispatches, once it has flown out and its gap has closed. None = the swipe is shown but removes nothing.
Source§

fn sheet(&self) -> Option<&SheetSpec>

If the widget is the moving panel of a crate::DraggableScrollableSheet, its configuration for this frame. The layout makes it as tall as the retained height, and the shell shares a finger on it between the sheet and the scroll areas inside. None = not a sheet.
Source§

fn on_sheet_dismissed(&self) -> Option<Msg>

The message a sheet dispatches once it has been lowered to nothing. None = it cannot be dismissed, or says nothing when it is.
Source§

fn refresh(&self) -> Option<RefreshSpec>

If the widget is a refresh area (crate::RefreshIndicator), its configuration for this frame. Any scrollable inside it routes the movement its physics refuses at the top edge into the pull, instead of into the overscroll glow. None = not a refresh area.
Source§

fn on_refresh(&self) -> Option<Msg>

The message a refresh area dispatches when an armed pull is released. None = the pull is shown but asks for nothing, which is what an area still waiting for its on_refresh looks like.
Source§

fn interactive(&self) -> Option<(f32, f32)>

If the widget is an interactive viewport (InteractiveViewer), returns its scale bounds (min, max). The paint walk renders its child in a transformed layer (retained scale + translation, clipped to the viewport); the shell routes drag → pan and wheel/pinch → zoom. None = not an interactive viewport. See crate::InteractiveViewer.
Source§

fn fitted(&self) -> Option<BoxFit>

If the widget fits its child to its box (FittedBox), returns the frus_core::BoxFit: the walk measures the child at its natural size, scales it according to the fit and centres it (composited layer, hit-test through M⁻¹). None = not a fitter. See crate::FittedBox.
Source§

fn rotated_quarter_turns(&self) -> Option<i32>

If the widget rotates its child by quarter turns (RotatedBox), returns the number of quarters. Unlike Transform, this affects layout: the box swaps its dimensions for an odd number. None = not a RotatedBox. See crate::RotatedBox.
Source§

fn navigator(&self) -> Option<(f32, bool)>

If the widget is a screen navigator, returns (progress, push?). Its children ([screen] or [outgoing, incoming]) are rendered full-window with a sliding transition.
Source§

fn navigator_gesture(&self) -> bool

Whether a finger drives the navigator’s transition — a back gesture — so that it follows the finger linearly (milestone 620).
Source§

fn navigator_clips(&self) -> bool

Whether a navigator clips its pages to its own box. true, which is the reference’s default (Clip.hardEdge) and the only sane one: a screen sliding in comes from outside the box and has to stop at its edge. Read more
Source§

fn navigator_retained(&self) -> usize

How many of a navigator’s first children are kept but not shown: the pages under the one on show. They are built, so what their components hold survives, and they are not laid out, drawn or given input. 0, the default, is a navigator that shows every page it holds.
Source§

fn measure(&self, theme: &Theme) -> Option<MeasureFn<'_>>

Measure under constraints: for a widget whose size depends on the space offered (a paragraph that wraps…), returns the closure wired into taffy. None = size fixed by style(). Contract: must be Some if and only if Widget::measure_key is. Read more
Source§

fn measure_key(&self, theme: &Theme) -> Option<u64>

Fingerprint of the content Widget::measure depends on (text, style…), mixed into the relayout fingerprint: without it, two different contents with the same style would be conflated by the cache and would keep a stale geometry. Contract: Some if and only if measure() is. Read more
Source§

fn on_long_press(&self) -> Option<Msg>

Message emitted by a long press (a press held ~500 ms without movement). The long press pre-empts the click: the release that follows does not emit on_click.
Source§

fn on_double_tap(&self) -> Option<Msg>

Message emitted by a double tap: two taps on this widget in quick succession (within 300 ms and 100 px of each other, the reference’s numbers). While one is possible, a first tap’s on_click waits out those 300 ms, so that the second tap of a double tap is not also a tap.
Source§

fn on_secondary_tap(&self) -> Option<Msg>

Message emitted by a secondary tap: a click of the secondary mouse button, usually the right one.
Source§

fn pan_axis(&self) -> Option<PanAxis>

Which way this widget takes a drag, if it takes one at all (milestone 582): the shell then reports it through on_pan. Inside a scroll, a drag along the scroll’s axis stays the scroll’s unless this axis claims it.
Source§

fn hover_region(&self) -> Option<HoverRegion>

Whether this widget is a region the mouse enters and leaves (milestone 583), and how: the cursor it asks for while the pointer is over it, and whether it hides the regions behind it. None for anything that is not one.
Source§

fn pointer_listener(&self) -> bool

Whether this widget hears the pointer’s raw events (milestone 586): a press inside it, and then that pointer wherever it goes until it lifts; and a mouse’s hover.
Source§

fn on_pointer_event(&self, event: ListenerEvent) -> Vec<Msg>

The messages for one raw event of the pointer, on a widget that is a pointer_listener. Several, when listeners wrap each other at the same place.
Source§

fn on_hover_event(&self, event: HoverEvent) -> Option<Msg>

Message for the pointer entering, moving over or leaving this region — one whose hover_region is set.
Source§

fn on_pan(&self, event: PanEvent) -> Option<Msg>

Message for one moment of a drag — its start, a movement, its end — on a widget whose pan_axis is set.
Source§

fn wants_title_bar(&self) -> bool

Whether this widget wants the title bar’s line for itself (milestone 640): a WindowMenuBar’s row. The shell gives it the line where the system allows it.
Source§

fn title_bar_role(&self) -> Option<TitleBarRole>

What this widget is to the system on the title bar’s line, which acts on it: the window’s icon or its three buttons (milestone 640).
Source§

fn pan_value(&self, event: PanEvent, value: f32, rtl: bool) -> Option<f32>

A drag that moves this widget’s own animated value (anim_target) — a switch’s thumb following the finger (milestone 638). Given a moment of the drag, the value now and whether the text runs right to left, the value to hold it at; None leaves it alone. The shell holds the value there while the finger is down, and when it lifts lets it settle from there, asking on_value_release what that means.
Source§

fn on_value_release(&self, value: f32) -> Option<Msg>

Message for a drag that moved this widget’s value letting go at value — a switch flips when its thumb was let go past half way (milestone 638).
Source§

fn on_key(&self, key: &Key) -> KeyResponse<Msg>

Key received while bubbling leaf→root: the focused widget gets it first, then each ancestor as long as the response is Ignored. (E.g. an OverlayPortal consumes Escape to close itself.)

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<Msg> Widget<Msg> for Box<dyn Widget<Msg>>

Lets an already boxed widget be composed where an impl Widget is expected (e.g. Flex::child). Delegates everything to the contained widget.

Source§

fn style(&self) -> Style

Source§

fn style_themed(&self, theme: &Theme) -> Style

Source§

fn theme_override(&self, inherited: &Theme) -> Option<Box<Theme>>

Source§

fn media_override(&self, inherited: MediaQuery) -> Option<MediaQuery>

Source§

fn scaffold_override(&self) -> Option<ScaffoldInfo>

Source§

fn scroll_behavior_override(&self) -> Option<ScrollBehavior>

Source§

fn build_themed(&self, theme: &Theme)

Source§

fn build_in(&self, id: WidgetId, runtime: &Runtime, theme: &Theme)

Source§

fn expand(&self, id: WidgetId, runtime: &Runtime, theme: &Theme)

Source§

fn switches(&self) -> bool

Source§

fn system_ui_style(&self) -> Option<SystemUiOverlayStyle>

Source§

fn repaint_boundary(&self) -> bool

Source§

fn debug_name(&self) -> &'static str

Source§

fn semantics(&self) -> Option<SemanticsProperties>

Source§

fn describes(&self) -> Option<Description>

Source§

fn children(&self) -> &[Box<dyn Widget<Msg>>]

Source§

fn paint(&self, bounds: Rect, status: Status, theme: &Theme, scene: &mut Scene)

Source§

fn on_click(&self) -> Option<Msg>

Source§

fn opaque(&self) -> bool

Source§

fn positional_click( &self, local_x: f32, local_y: f32, width: f32, height: f32, ) -> Option<Msg>

Source§

fn cursor_icon( &self, local_x: f32, local_y: f32, width: f32, height: f32, ) -> Option<Cursor>

Source§

fn key(&self) -> Option<u64>

Source§

fn on_edit(&self, edit: &mut Edit, key: &Key) -> Option<Msg>

Source§

fn cursor_at( &self, local_x: f32, local_y: f32, width: f32, scroll_cursor: usize, ) -> Option<usize>

Source§

fn text_metrics( &self, width: f32, cursor: usize, ) -> Option<(f32, f32, f32, f32)>

Source§

fn text_viewport(&self, rect: Rect) -> Option<Rect>

Source§

fn caret_vertical( &self, width: f32, cursor: usize, down: bool, page: bool, goal_x: Option<f32>, ) -> Option<(usize, f32)>

Source§

fn selected_text(&self, edit: &Edit) -> Option<String>

Source§

fn text_value(&self) -> Option<&str>

Source§

fn takes_typing(&self) -> bool

Source§

fn selection_text(&self) -> Option<&str>

Source§

fn region_toolbar( &self, context: ToolbarContext, width: f32, range: (usize, usize), ) -> Option<(Rect, &dyn Widget<Msg>)>

Source§

fn selection_grip( &self, width: f32, index: usize, start: bool, ) -> Option<SelectionHandle>

Source§

fn area_toolbar( &self, context: ToolbarContext, ) -> Option<Option<&dyn Widget<Msg>>>

Source§

fn selection_hit(&self, local_x: f32, local_y: f32, width: f32) -> Option<usize>

Source§

fn replace_value(&self, value: String) -> Option<Msg>

Source§

fn word_at(&self, index: usize) -> Option<(usize, usize)>

Source§

fn selection_handles( &self, width: f32, edit: &Edit, scroll_y: f32, ) -> Option<[SelectionHandle; 2]>

Source§

fn selection_toolbar(&self, context: ToolbarContext) -> Option<&dyn Widget<Msg>>

Source§

fn selection_anchor( &self, width: f32, edit: &Edit, scroll_y: f32, ) -> Option<Rect>

Source§

fn edit_action(&self) -> Option<EditAction>

Source§

fn focusable(&self) -> bool

Source§

fn autofocus(&self) -> bool

Source§

fn shortcut_bindings(&self) -> &[(KeyStroke, Intent)]

Source§

fn shortcut_callbacks(&self) -> &[(KeyStroke, Msg)]

Source§

fn action_bindings(&self) -> &[(Intent, Msg)]

Source§

fn action_listeners(&self) -> &[(Intent, Msg)]

Source§

fn on_keystroke(&self) -> Option<Rc<dyn Fn(KeyStroke) -> Option<Msg>>>

Source§

fn descendants_focusable(&self) -> bool

Source§

fn focus_skip_traversal(&self) -> bool

Source§

fn focus_order(&self) -> Option<f32>

Source§

fn focus_group(&self) -> bool

Source§

fn autofill_hints(&self) -> &[AutofillHint]

Source§

fn autofill_group(&self) -> bool

Source§

fn draws_own_focus(&self) -> bool

Source§

fn draggable(&self) -> bool

Source§

fn drag_track(&self) -> DragTrack

Source§

fn on_drag(&self, fraction: f32) -> Option<Msg>

Source§

fn on_drag_start(&self, fraction: f32) -> Option<Msg>

Source§

fn on_drag_end(&self, fraction: f32) -> Option<Msg>

Source§

fn on_drag_delta(&self, dx: f32) -> Option<Msg>

Source§

fn reorder_index(&self) -> Option<usize>

Source§

fn on_reorder(&self, to: usize) -> Option<Msg>

Source§

fn reorder_draggable(&self) -> bool

Source§

fn reorder_droppable(&self) -> bool

Source§

fn reorder_announcement(&self, to: usize) -> Option<String>

Source§

fn reorder_axis(&self) -> ReorderAxis

Source§

fn reorder_inserts(&self) -> bool

Source§

fn announce(&self) -> Option<String>

Source§

fn stack(&self) -> bool

Source§

fn sticky_header(&self) -> bool

Source§

fn custom_layout(&self) -> Option<CustomLayout<'_>>

Source§

fn continuous(&self) -> bool

Source§

fn scroll_content(&self) -> Option<&dyn Widget<Msg>>

Source§

fn virtual_list(&self, viewport: Size) -> Option<VirtualList<'_, Msg>>

Source§

fn page_view(&self) -> Option<PagedView<'_, Msg>>

Source§

fn intrinsic(&self) -> Option<(IntrinsicAxis, Option<f32>)>

Source§

fn overflow_box(&self) -> Option<Overflow>

Source§

fn constraints_transform(&self) -> Option<ConstraintsTransform>

Source§

fn animated_size(&self) -> Option<SizeAnimation>

Source§

fn size_factor(&self) -> Option<(f32, f32)>

Source§

fn clips_to_box(&self) -> bool

Source§

fn hero_tag(&self) -> Option<u64>

Source§

fn drag_payload(&self) -> Option<u64>

Source§

fn drag_needs_long_press(&self) -> bool

Source§

fn drag_ghost_opacity(&self) -> f32

Source§

fn on_dropped(&self, accepted: bool) -> Option<Msg>

Source§

fn drop_zone(&self) -> bool

Source§

fn accepts_drag(&self, payload: u64) -> bool

Source§

fn on_drop(&self, payload: u64) -> Option<Msg>

Source§

fn on_page_changed(&self, page: usize) -> Option<Msg>

Source§

fn on_scroll(&self, position: ScrollPosition) -> Option<Msg>

Source§

fn scroll_grain(&self) -> f32

Source§

fn layout_builder(&self) -> Option<&dyn Fn(Size) -> Box<dyn Widget<Msg>>>

Source§

fn scroll_overlay(&self) -> Option<&OverlayBuilder<Msg>>

Source§

fn scroll_axis(&self) -> Axis

Source§

fn scroll_physics(&self) -> Option<ScrollPhysics>

Source§

fn scrollbars(&self) -> Option<Scrollbars>

Source§

fn thumb_visibility(&self) -> Option<bool>

Source§

fn ime(&self) -> Ime

Source§

fn overlay(&self) -> Option<(&dyn Widget<Msg>, Placement)>

Source§

fn overlay_dismiss(&self) -> Option<Msg>

Source§

fn overlay_scrim(&self, theme: &Theme) -> Option<Color>

Source§

fn overlay_traps_focus(&self) -> bool

Source§

fn anim_target(&self) -> Option<f32>

Source§

fn anim_transform(&self) -> Option<TransformValues>

Source§

fn anim_duration(&self) -> f32

Source§

fn anim_curve(&self) -> Curve

Source§

fn opacity_group(&self) -> Option<f32>

Source§

fn anim_color(&self) -> Option<Color>

Source§

fn anim_size(&self) -> Option<Size>

Source§

fn anim_radius(&self) -> Option<BorderRadius>

Source§

fn anim_padding(&self) -> Option<Insets>

Source§

fn anim_offset(&self) -> Option<(f32, f32)>

Source§

fn anim_pins(&self) -> Option<Positioning>

Source§

fn anim_fractions(&self) -> Option<(Option<f32>, Option<f32>)>

Source§

fn anim_text_style(&self) -> Option<TextStyle>

Source§

fn alignment_geometry(&self) -> Option<AlignmentGeometry>

Source§

fn transform_translate(&self) -> Option<(f32, f32)>

Source§

fn translate_fraction(&self) -> Option<(f32, f32)>

Source§

fn transform_scale(&self) -> Option<(f32, f32, Alignment)>

Source§

fn transform_rotate(&self) -> Option<(f32, Alignment)>

Source§

fn clip_shape(&self) -> Option<ClipShape>

Source§

fn clip_path(&self) -> Option<&Path>

Source§

fn layer_filter(&self, cx: FilterContext) -> Option<LayerFilter>

Source§

fn text_baseline(&self, theme: &Theme) -> Option<f32>

Source§

fn ignores_baseline(&self) -> bool

Source§

fn baseline_target(&self) -> Option<f32>

Source§

fn fill_axes(&self, theme: &Theme) -> FillAxes

Source§

fn soft_extent(&self) -> FillAxes

Source§

fn main_axis_floor(&self, theme: &Theme) -> Option<f32>

Source§

fn tile_shape(&self) -> Option<f32>

Source§

fn positioned(&self) -> Option<Positioning>

Source§

fn stack_fit(&self) -> StackFit

Source§

fn stack_measured(&self) -> bool

Source§

fn stack_clips(&self) -> bool

Source§

fn stack_direction(&self) -> Option<TextDirection>

Source§

fn stack_visible(&self) -> Option<usize>

Source§

fn scroll_reverse(&self) -> bool

Source§

fn keep_visible(&self, size: Size, theme: &Theme) -> Option<KeepVisible>

Source§

fn scroll_padding(&self) -> Insets

Source§

fn backdrop_group(&self) -> bool

Source§

fn ink(&self, theme: &Theme) -> Option<InkStyle>

Source§

fn foreground(&self, theme: &Theme) -> Option<BoxDecoration>

Source§

fn barrier(&self) -> Option<ModalBarrier>

Source§

fn dismissible(&self) -> Option<DismissSpec>

Source§

fn on_dismissed(&self, direction: DismissDirection) -> Option<Msg>

Source§

fn sheet(&self) -> Option<&SheetSpec>

Source§

fn on_sheet_dismissed(&self) -> Option<Msg>

Source§

fn refresh(&self) -> Option<RefreshSpec>

Source§

fn on_refresh(&self) -> Option<Msg>

Source§

fn interactive(&self) -> Option<(f32, f32)>

Source§

fn fitted(&self) -> Option<BoxFit>

Source§

fn rotated_quarter_turns(&self) -> Option<i32>

Source§

fn navigator(&self) -> Option<(f32, bool)>

Source§

fn navigator_gesture(&self) -> bool

Source§

fn navigator_clips(&self) -> bool

Source§

fn navigator_retained(&self) -> usize

Source§

fn measure(&self, theme: &Theme) -> Option<MeasureFn<'_>>

Source§

fn measure_key(&self, theme: &Theme) -> Option<u64>

Source§

fn on_long_press(&self) -> Option<Msg>

Source§

fn on_double_tap(&self) -> Option<Msg>

Source§

fn on_secondary_tap(&self) -> Option<Msg>

Source§

fn pan_axis(&self) -> Option<PanAxis>

Source§

fn hover_region(&self) -> Option<HoverRegion>

Source§

fn pointer_listener(&self) -> bool

Source§

fn on_pointer_event(&self, event: ListenerEvent) -> Vec<Msg>

Source§

fn on_hover_event(&self, event: HoverEvent) -> Option<Msg>

Source§

fn on_pan(&self, event: PanEvent) -> Option<Msg>

Source§

fn wants_title_bar(&self) -> bool

Source§

fn title_bar_role(&self) -> Option<TitleBarRole>

Source§

fn pan_value(&self, event: PanEvent, value: f32, rtl: bool) -> Option<f32>

Source§

fn on_value_release(&self, value: f32) -> Option<Msg>

Source§

fn on_key(&self, key: &Key) -> KeyResponse<Msg>

Implementors§

Source§

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

Source§

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

Source§

impl<Msg: Clone + 'static> Widget<Msg> for AnimatedContainer<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for AnimatedCrossFade<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for AnimatedFractionallySizedBox<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for AnimatedOpacity<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for AnimatedPadding<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for AnimatedSwitcher<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for BackButton<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for BottomAppBar<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for Button<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for CheckboxListTile<Msg>

The three Widget implementations, written out rather than produced by a macro.

They are three near-identical copies and a macro would say them once, which is what this module did until the crate’s own guard failed on it: milestone 322’s every_control_with_an_enabled_flag_honours_all_four reads the source of every module carrying an enabled flag and checks that each of the four hooks consults it. A hook inside a macro_rules! body is text the guard cannot parse, so the macro put this module in the one place the net does not reach.

A safety net a widget can hide from is a net with a hole in it. Three copies is the cheaper of the two prices.

Source§

impl<Msg: Clone + 'static> Widget<Msg> for Chip<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for CloseButton<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for ColorPicker<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for ColoredBox<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for DataTable<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for DecoratedBox<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for DraggableScrollableSheet<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for Drawer<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for DrawerButton<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for DrawerHeader<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for EndDrawerButton<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for ExpansionPanelList<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for ExpansionTile<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for GridTile<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for GridTileBar<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for GridView<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for ListTile<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for ListWheel<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for NavigationDrawer<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for NavigationRail<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for Opacity<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for RadioListTile<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for RangeSlider<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for ReorderableList<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for SearchAnchor<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for SearchBar<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for SwitchListTile<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for Text

Source§

impl<Msg: Clone + 'static> Widget<Msg> for TextField<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for ThemeBuilder<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for ToggleButtons<Msg>

Source§

impl<Msg: Clone + 'static> Widget<Msg> for UserAccountsDrawerHeader<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for AbsorbPointer<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ActionListener<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Actions<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Aligned<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for AnimatedAlign<Msg>

Everything is the Aligned it is, which moves its anchor.

Source§

impl<Msg: Clone> Widget<Msg> for AnimatedDefaultTextStyle<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for AnimatedPositioned<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for AnimatedSize<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for AnnotatedRegion<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for AspectRatio<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Autocomplete<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for BackdropFilter<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for BackdropGroup<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Baseline<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for BottomBar<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for BottomSheet<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Breadcrumb<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for CallbackShortcuts<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for CarouselView<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Center<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ClipOval<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ClipPath<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ClipRRect<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ClipRect<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ColorFiltered<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Column<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ConstrainedBox<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ConstraintsTransformBox<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Container<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for CustomMultiChildLayout<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for DatePicker<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for DateTimePicker<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for DateTimeRange<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for DecoratedBoxTransition<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Dialog<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Dismissible<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for DragTarget<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Draggable<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for DropdownButton<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for DropdownMenu<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ErrorSummary<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ExcludeFocus<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ExcludeFocusTraversal<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ExcludeSemantics<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for FittedBox<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Flex<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for FloatingActionButton<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Focus<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for FocusTraversalGroup<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for FocusTraversalOrder<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for FocusableActionDetector<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for FractionalTranslation<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for FractionallySizedBox<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Hero<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for IconButton<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for IgnoreBaseline<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for IgnorePointer<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ImageFiltered<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for IndexedStack<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for InkWell<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for InteractiveViewer<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Intrinsic<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Kanban<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for KeyboardListener<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for LimitedBox<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for MenuAnchor<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for MenuBar<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for NavScaffold<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for NavigationBar<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Offstage<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for OverflowBox<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for OverlayPortal<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Padding<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Pagination<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for PopupMenuButton<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Radio<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for RadioGroup<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Rating<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for RefreshIndicator<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for RotatedBox<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Row<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for SafeArea<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ScaffoldMessenger<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for SegmentedButton<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Semantics<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for ShaderMask<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Shortcuts<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for SingleChildScrollView<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for SizeTransition<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for SizedBox<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for SizedOverflowBox<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for SnackBar<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Stack<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Stepper<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Steps<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for StickyHeader<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for TabBar<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for TabPageSelector<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Table<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for TimePicker<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for TimeRange<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Tooltip<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Transform<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Tree<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for TwoPane<Msg>

Source§

impl<Msg: Clone> Widget<Msg> for Visibility<Msg>

Source§

impl<Msg> Widget<Msg> for Alert

Source§

impl<Msg> Widget<Msg> for AnimatedRotation<Msg>

Source§

impl<Msg> Widget<Msg> for AnimatedScale<Msg>

Source§

impl<Msg> Widget<Msg> for AnimatedSlide<Msg>

Source§

impl<Msg> Widget<Msg> for AutofillGroup<Msg>

Source§

impl<Msg> Widget<Msg> for Badge

Source§

impl<Msg> Widget<Msg> for BarChart<Msg>

Source§

impl<Msg> Widget<Msg> for Card<Msg>

Source§

impl<Msg> Widget<Msg> for Checkbox<Msg>

Source§

impl<Msg> Widget<Msg> for CircleAvatar<Msg>

Source§

impl<Msg> Widget<Msg> for CircularProgressIndicator

Source§

impl<Msg> Widget<Msg> for Component<Msg>

Source§

impl<Msg> Widget<Msg> for CustomPaint<Msg>

Source§

impl<Msg> Widget<Msg> for DefaultTextStyleTransition<Msg>

Source§

impl<Msg> Widget<Msg> for Divider

Source§

impl<Msg> Widget<Msg> for Expanded<Msg>

Source§

impl<Msg> Widget<Msg> for FadeTransition<Msg>

Source§

impl<Msg> Widget<Msg> for Flexible<Msg>

Source§

impl<Msg> Widget<Msg> for GestureDetector<Msg>

Source§

impl<Msg> Widget<Msg> for Icon

Source§

impl<Msg> Widget<Msg> for Image

Source§

impl<Msg> Widget<Msg> for ImageIcon

Source§

impl<Msg> Widget<Msg> for Kbd

Source§

impl<Msg> Widget<Msg> for Keyed<Msg>

Source§

impl<Msg> Widget<Msg> for LayoutBuilder<Msg>

Source§

impl<Msg> Widget<Msg> for LineChart<Msg>

Source§

impl<Msg> Widget<Msg> for LinearProgressIndicator

Source§

impl<Msg> Widget<Msg> for ListView<Msg>

Source§

impl<Msg> Widget<Msg> for Listener<Msg>

Source§

impl<Msg> Widget<Msg> for MediaScope<Msg>

Source§

impl<Msg> Widget<Msg> for MouseRegion<Msg>

Source§

impl<Msg> Widget<Msg> for Navigator<Msg>

Source§

impl<Msg> Widget<Msg> for PageView<Msg>

Source§

impl<Msg> Widget<Msg> for Placeholder

Source§

impl<Msg> Widget<Msg> for Positioned<Msg>

Source§

impl<Msg> Widget<Msg> for Responsive<Msg>

Source§

impl<Msg> Widget<Msg> for RichText

Source§

impl<Msg> Widget<Msg> for ScaffoldScope<Msg>

Source§

impl<Msg> Widget<Msg> for ScaleTransition<Msg>

Source§

impl<Msg> Widget<Msg> for ScrollConfiguration<Msg>

Source§

impl<Msg> Widget<Msg> for SelectionArea<Msg>

Source§

impl<Msg> Widget<Msg> for Skeleton

Source§

impl<Msg> Widget<Msg> for SlideTransition<Msg>

Source§

impl<Msg> Widget<Msg> for Slider<Msg>

Source§

impl<Msg> Widget<Msg> for Spacer

Source§

impl<Msg> Widget<Msg> for Switch<Msg>

Source§

impl<Msg> Widget<Msg> for Themed<Msg>

Source§

impl<Msg> Widget<Msg> for Timeline<Msg>

Source§

impl<Msg> Widget<Msg> for VerticalDivider

Source§

impl<Msg> Widget<Msg> for WindowMenuBar<Msg>