pub struct Text { /* private fields */ }Expand description
A single-line text widget.
Its layout size comes from a styled measurement (frus-text, weight and
italic included); it pushes a text primitive into the scene when painting. The
TextStyle’s color is inherited from the theme when absent.
Implementations§
Source§impl Text
impl Text
Sourcepub fn new(content: impl Into<String>) -> Self
pub fn new(content: impl Into<String>) -> Self
Creates a text that has chosen nothing: it takes its size, weight and colour
from whatever subtree it is put in, and the framework’s own where nothing says
otherwise (16 px, regular, the theme’s on_surface).
It used to be written as a 16 px style, which read the same and meant something else: a style that answered 16, so an app bar or a section could not dress it.
Sourcepub fn styled(content: impl Into<String>, style: TextStyle) -> Self
pub fn styled(content: impl Into<String>, style: TextStyle) -> Self
Creates a text from a full TextStyle — typically one step of the theme’s
scale (Text::styled("Title", theme.text.title_large)).
The style is taken exactly as written: whatever it names it answers, and
whatever it leaves open stays open to a subtree.
So Text::styled(s, theme.text.title_medium) wears that step of the scale and
still picks up a colour from the section it sits in, while
Text::styled(s, TextStyle::new(20.0)) fixes the size alone and inherits the rest.
Sourcepub fn heading(self) -> Self
pub fn heading(self) -> Self
Wraps at the width the parent offers. This is the default, and the call is kept because saying so at the call site is not redundant when it is the whole point of the widget being there. Marks this text as a heading: a landmark assistive technology can jump between, instead of one more run of prose.
It changes nothing that is drawn. A screen reader’s user moves through a screen by
its headings, and a title announced as a label gives them nothing to move between
— which is what an app bar’s title was until milestone 397. The reference says the
same thing with SemanticsProperties(header: true) around its title.
Sourcepub fn wrap(self) -> Self
pub fn wrap(self) -> Self
Wraps the text at the width it is given: soft_wrap(true). It is
what an unset text does already; this says so, and undoes a
no_wrap further up a chain.
Sourcepub fn no_wrap(self) -> Self
pub fn no_wrap(self) -> Self
Keeps the text on one line, explicit newlines aside. It then runs past its box
rather than folding, and Text::overflow decides what becomes of the part that
hangs over.
Sourcepub fn soft_wrap(self, soft_wrap: bool) -> Self
pub fn soft_wrap(self, soft_wrap: bool) -> Self
Whether the text wraps at the width it is given. wrap() is soft_wrap(true).
Off, the text stays on one line — explicit newlines aside — and runs past its box
or is cut, according to Text::overflow.
Sourcepub fn align(self, align: TextAlign) -> Self
pub fn align(self, align: TextAlign) -> Self
Where the lines sit inside the box the text was given.
It does nothing to a text that shrink-wraps, and that is not a limitation of this
implementation: a box exactly as wide as its text has nowhere to align it to. It
takes effect once something has made the box wider — a stretched column, an
crate::Expanded, a width.
Sourcepub fn max_lines(self, max_lines: usize) -> Self
pub fn max_lines(self, max_lines: usize) -> Self
At most max_lines lines; what is past them is dropped, and Text::overflow
decides how the last one ends.
Asking for a limit also tells the layout this text may be given less width than it asked for — a limit is only meaningful for a text expected to be squeezed.
Sourcepub fn overflow(self, overflow: TextOverflow) -> Self
pub fn overflow(self, overflow: TextOverflow) -> Self
What becomes of text that does not fit: cut, cut with an ellipsis, faded out, or drawn past the box.
Saying so also tells the layout this text may be given less than it asked for.
Sourcepub fn ellipsis(self) -> Self
pub fn ellipsis(self) -> Self
Keeps the text on one line and inside its box, cut with an ellipsis when it
does not fit — the reference’s TextOverflow.ellipsis.
This is two things, and the second is the one that matters. The obvious half is the
cut. The other is that an ellipsising text tells the layout it may be given less
than it asked for: a flex item’s automatic minimum size is its content, so a plain
Text in a row refuses to shrink and pushes its siblings out of the box instead —
which is how a long task name evicted its own delete button, off the card and out of
the hit registry, on a device (milestone 333). min_width: 0 is what lets flexbox
do its job, and it is the same fix the web has needed for the same reason forever.
Mutually exclusive with Text::wrap, which is the other answer to the same
question: wrap grows downwards, this one cuts. The last one called wins.
Sourcepub fn weight(self, weight: FontWeight) -> Self
pub fn weight(self, weight: FontWeight) -> Self
Sets the weight.
Sourcepub fn family(self, family: FontFamily) -> Self
pub fn family(self, family: FontFamily) -> Self
Sets the font family — the reference’s
fontFamily.
Text::new("fn main()").family(FontFamily::Monospace) for code;
FontFamily::Named("Inter") for a face registered with frus_text::add_font.
Unset, the application’s default.
A run containing Arabic keeps the registered Arabic face whatever is named
here, because a family without Arabic coverage renders nothing at all on Android
rather than falling back — see frus_core::TextStyle::family.
Sourcepub fn height(self, height: f32) -> Self
pub fn height(self, height: f32) -> Self
Sets the line height as a multiple of the font size — the reference’s
TextStyle::height.
1.0 packs the lines to exactly the type’s size, 1.6 opens a paragraph up.
Unset, the line height is whatever a surrounding crate::DefaultTextStyle said,
or DEFAULT_LINE_HEIGHT at the end of the chain.
A ratio and not a length, so the leading grows with the letters when a reader turns the type up instead of staying where it was set.
Sourcepub fn strikethrough(self) -> Self
pub fn strikethrough(self) -> Self
Strikes the text through.
Sourcepub fn decoration(self, decoration: TextDecoration) -> Self
pub fn decoration(self, decoration: TextDecoration) -> Self
Sets the decoration lines (freely combined).
Sourcepub fn decoration_color(self, color: Color) -> Self
pub fn decoration_color(self, color: Color) -> Self
Sets the decoration color (otherwise the text’s).
Trait Implementations§
Source§impl<Msg> Widget<Msg> for Text
impl<Msg> Widget<Msg> for Text
Source§fn style_themed(&self, theme: &Theme) -> Style
fn style_themed(&self, theme: &Theme) -> Style
A subtree can hand down a size, a weight and a line limit, and every one of those is a box, not a colour. Resolving them here rather than at paint is what lets an app bar make the words inside it smaller and have them take less room, instead of the same room with smaller writing in it.
Source§fn main_axis_floor(&self, theme: &Theme) -> Option<f32>
fn main_axis_floor(&self, theme: &Theme) -> Option<f32>
A text will not be squeezed along a row: it runs past the end of one rather than being folded into a column of single words, which is the reference’s rule and was, until now, the only thing a declared width was doing here.
A text that has said what to do when it overflows has already said the opposite, and is left alone.
Source§fn text_baseline(&self, theme: &Theme) -> Option<f32>
fn text_baseline(&self, theme: &Theme) -> Option<f32>
The line this text sits on, measured from the top of its box. A Text is the
widget that actually has a baseline; every alignment that talks about one is
ultimately asking one of these.
Source§fn fill_axes(&self, theme: &Theme) -> FillAxes
fn fill_axes(&self, theme: &Theme) -> FillAxes
An aligned text takes the width its parent offers: a box exactly as wide as its
text has nowhere to align it to. It is the same request a crate::Row makes,
and it is answered by the same walk.
Source§fn measure(&self, theme: &Theme) -> Option<MeasureFn<'_>>
fn measure(&self, theme: &Theme) -> Option<MeasureFn<'_>>
None = size fixed by style(). Contract: must be Some if and only if
Widget::measure_key is. Read moreSource§fn measure_key(&self, theme: &Theme) -> Option<u64>
fn measure_key(&self, theme: &Theme) -> Option<u64>
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 moreSource§fn paint(&self, bounds: Rect, status: Status, theme: &Theme, scene: &mut Scene)
fn paint(&self, bounds: Rect, status: Status, theme: &Theme, scene: &mut Scene)
Source§fn semantics(&self) -> Option<SemanticsProperties>
fn semantics(&self) -> Option<SemanticsProperties>
None =
no semantics of its own (a layout container — its children, though,
may have some). See frus_core::SemanticsProperties.Source§fn opaque(&self) -> bool
fn opaque(&self) -> bool
Source§fn key(&self) -> Option<u64>
fn key(&self) -> Option<u64>
None = positional identity. See crate::Keyed.Source§fn debug_name(&self) -> &'static str
fn debug_name(&self) -> &'static str
Box, crate::Keyed…) delegate
to their content.Source§fn describes(&self) -> Option<Description>
fn describes(&self) -> Option<Description>
crate::Semantics wrapper, and nothing else
so far. Read moreSource§fn on_edit(&self, _edit: &mut Edit, _key: &Key) -> Option<Msg>
fn on_edit(&self, _edit: &mut Edit, _key: &Key) -> Option<Msg>
Source§fn positional_click(
&self,
_local_x: f32,
_local_y: f32,
_width: f32,
_height: f32,
) -> Option<Msg>
fn positional_click( &self, _local_x: f32, _local_y: f32, _width: f32, _height: f32, ) -> Option<Msg>
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>
fn cursor_icon( &self, _local_x: f32, _local_y: f32, _width: f32, _height: f32, ) -> Option<Cursor>
(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>
fn cursor_at( &self, _local_x: f32, _local_y: f32, _width: f32, _scroll_cursor: usize, ) -> Option<usize>
local_y picks the line in a
multi-line field (ignored on a single line). Read moreSource§fn text_metrics(
&self,
_width: f32,
_cursor: usize,
) -> Option<(f32, f32, f32, f32)>
fn text_metrics( &self, _width: f32, _cursor: usize, ) -> Option<(f32, f32, f32, f32)>
(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>
fn text_viewport(&self, _rect: Rect) -> Option<Rect>
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)>
fn caret_vertical( &self, _width: f32, _cursor: usize, _down: bool, _page: bool, _goal_x: Option<f32>, ) -> Option<(usize, f32)>
(new index, visual column used). Read moreSource§fn selected_text(&self, _edit: &Edit) -> Option<String>
fn selected_text(&self, _edit: &Edit) -> Option<String>
Source§fn text_value(&self) -> Option<&str>
fn text_value(&self) -> Option<&str>
None otherwise.Source§fn replace_value(&self, _value: String) -> Option<Msg>
fn replace_value(&self, _value: String) -> Option<Msg>
value in this field: the one typing would have produced,
for a value the framework restores rather than the user typing it. Read moreSource§fn word_at(&self, _index: usize) -> Option<(usize, usize)>
fn word_at(&self, _index: usize) -> Option<(usize, usize)>
(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]>
fn selection_handles( &self, _width: f32, _edit: &Edit, _scroll_y: f32, ) -> Option<[SelectionHandle; 2]>
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 shortcut_bindings(&self) -> &[(KeyStroke, Intent)]
fn shortcut_bindings(&self) -> &[(KeyStroke, Intent)]
crate::Shortcuts.Source§fn shortcut_callbacks(&self) -> &[(KeyStroke, Msg)]
fn shortcut_callbacks(&self) -> &[(KeyStroke, Msg)]
crate::CallbackShortcuts.Source§fn action_bindings(&self) -> &[(Intent, Msg)]
fn action_bindings(&self) -> &[(Intent, Msg)]
crate::Actions.Source§fn action_listeners(&self) -> &[(Intent, Msg)]
fn action_listeners(&self) -> &[(Intent, Msg)]
crate::ActionListener.Source§fn on_keystroke(&self) -> Option<Rc<dyn Fn(KeyStroke) -> Option<Msg>>>
fn on_keystroke(&self) -> Option<Rc<dyn Fn(KeyStroke) -> Option<Msg>>>
crate::KeyboardListener. None (the default) is not a listener.Source§fn descendants_focusable(&self) -> bool
fn descendants_focusable(&self) -> bool
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
fn focus_skip_traversal(&self) -> bool
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>
fn focus_order(&self) -> Option<f32>
NumericFocusOrder. None leaves them in tree order, which is where
everything sits until someone says otherwise.Source§fn focus_group(&self) -> bool
fn focus_group(&self) -> bool
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]
fn autofill_hints(&self) -> &[AutofillHint]
AutofillHint. Empty (the default) is a field that takes
no part in autofill at all. Read moreSource§fn autofill_group(&self) -> bool
fn autofill_group(&self) -> bool
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
fn draws_own_focus(&self) -> bool
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
fn draggable(&self) -> bool
true, the widget responds to pointer dragging (sliders, handles).Source§fn on_drag(&self, _fraction: f32) -> Option<Msg>
fn on_drag(&self, _fraction: f32) -> Option<Msg>
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>
fn on_drag_start(&self, _fraction: f32) -> Option<Msg>
Source§fn on_drag_end(&self, _fraction: f32) -> Option<Msg>
fn on_drag_end(&self, _fraction: f32) -> Option<Msg>
Source§fn on_drag_delta(&self, _dx: f32) -> Option<Msg>
fn on_drag_delta(&self, _dx: f32) -> Option<Msg>
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>
fn hero_tag(&self) -> Option<u64>
crate::Hero.Source§fn drag_payload(&self) -> Option<u64>
fn drag_payload(&self) -> Option<u64>
crate::Draggable.Source§fn drag_needs_long_press(&self) -> bool
fn drag_needs_long_press(&self) -> bool
Source§fn drag_ghost_opacity(&self) -> f32
fn drag_ghost_opacity(&self) -> f32
Source§fn on_dropped(&self, _accepted: bool) -> Option<Msg>
fn on_dropped(&self, _accepted: bool) -> Option<Msg>
true if a target took it.Source§fn drop_zone(&self) -> bool
fn drop_zone(&self) -> bool
crate::DragTarget.Source§fn accepts_drag(&self, _payload: u64) -> bool
fn accepts_drag(&self, _payload: u64) -> bool
payload? Only asked of a drop target.Source§fn on_drop(&self, _payload: u64) -> Option<Msg>
fn on_drop(&self, _payload: u64) -> Option<Msg>
Source§fn reorder_index(&self) -> Option<usize>
fn reorder_index(&self) -> Option<usize>
Source§fn on_reorder(&self, _to: usize) -> Option<Msg>
fn on_reorder(&self, _to: usize) -> Option<Msg>
to.
The widget knows its own index and the on_reorder(from, to) callback.Source§fn reorder_axis(&self) -> ReorderAxis
fn reorder_axis(&self) -> ReorderAxis
ReorderAxis::Horizontal): the shell
orients the drag preview (ghost + insertion indicator) accordingly. Kanban cards
return ReorderAxis::Vertical.Source§fn reorder_inserts(&self) -> bool
fn reorder_inserts(&self) -> bool
false by default, which is the table. Read moreSource§fn reorder_draggable(&self) -> bool
fn reorder_draggable(&self) -> bool
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
fn reorder_droppable(&self) -> bool
true by default, and the mirror image of
reorder_draggable: a source-only grip — a list row’s
drag handle — returns false. Read moreSource§fn reorder_announcement(&self, _to: usize) -> Option<String>
fn reorder_announcement(&self, _to: usize) -> Option<String>
to — the
spoken counterpart of the ghost, for someone who cannot see it land. Read moreSource§fn announce(&self) -> Option<String>
fn announce(&self) -> Option<String>
None = nothing to announce
(the default).Source§fn stack(&self) -> bool
fn stack(&self) -> bool
true, the widget is a stack: its children are superimposed layers
(the same box), rendered in order (the last one on top).Source§fn continuous(&self) -> bool
fn continuous(&self) -> bool
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
fn repaint_boundary(&self) -> bool
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>>
fn scroll_content(&self) -> Option<&dyn Widget<Msg>>
Source§fn virtual_list(&self, _viewport: Size) -> Option<VirtualList<'_, Msg>>
fn virtual_list(&self, _viewport: Size) -> Option<VirtualList<'_, Msg>>
Source§fn page_view(&self) -> Option<PagedView<'_, Msg>>
fn page_view(&self) -> Option<PagedView<'_, Msg>>
Source§fn on_page_changed(&self, _page: usize) -> Option<Msg>
fn on_page_changed(&self, _page: usize) -> Option<Msg>
Source§fn on_scroll(&self, _position: ScrollPosition) -> Option<Msg>
fn on_scroll(&self, _position: ScrollPosition) -> Option<Msg>
crate::ScrollPosition. Read moreSource§fn scroll_grain(&self) -> f32
fn scroll_grain(&self) -> f32
0 — the
default — reports every change. Read moreSource§fn intrinsic(&self) -> Option<(IntrinsicAxis, Option<f32>)>
fn intrinsic(&self) -> Option<(IntrinsicAxis, Option<f32>)>
crate::Intrinsic.Source§fn overflow_box(&self) -> Option<Overflow>
fn overflow_box(&self) -> Option<Overflow>
crate::OverflowBox.Source§fn constraints_transform(&self) -> Option<ConstraintsTransform>
fn constraints_transform(&self) -> Option<ConstraintsTransform>
None — the default — means the child shares this node’s layout, as
everything ordinary does. See crate::ConstraintsTransformBox.Source§fn layout_builder(&self) -> Option<&dyn Fn(Size) -> Box<dyn Widget<Msg>>>
fn layout_builder(&self) -> Option<&dyn Fn(Size) -> Box<dyn Widget<Msg>>>
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>>
fn scroll_overlay(&self) -> Option<&OverlayBuilder<Msg>>
offset → overlay factory. See crate::ScrollOverlay. Read moreSource§fn scroll_axis(&self) -> Axis
fn scroll_axis(&self) -> Axis
Source§fn scroll_physics(&self) -> Option<ScrollPhysics>
fn scroll_physics(&self) -> Option<ScrollPhysics>
None — the usual answer — leaves the choice to
the application, which defaults to what the platform does.Source§fn scrollbars(&self) -> Option<Scrollbars>
fn scrollbars(&self) -> Option<Scrollbars>
None — the default — follows the application, which follows
the platform. See crate::Scrollbars.Source§fn thumb_visibility(&self) -> Option<bool>
fn thumb_visibility(&self) -> Option<bool>
scrollbar.dart:214). Read moreSource§fn ime(&self) -> Ime
fn ime(&self) -> Ime
Source§fn overlay(&self) -> Option<(&dyn Widget<Msg>, Placement)>
fn overlay(&self) -> Option<(&dyn Widget<Msg>, Placement)>
Source§fn overlay_dismiss(&self) -> Option<Msg>
fn overlay_dismiss(&self) -> Option<Msg>
Source§fn overlay_scrim(&self, _theme: &Theme) -> Option<Color>
fn overlay_scrim(&self, _theme: &Theme) -> Option<Color>
None — the usual answer — leaves it to the scheme’s scrim
role at the framework’s own opacity. Read moreSource§fn overlay_traps_focus(&self) -> bool
fn overlay_traps_focus(&self) -> bool
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>
fn anim_target(&self) -> Option<f32>
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>
fn anim_transform(&self) -> Option<TransformValues>
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 moreSource§fn anim_duration(&self) -> f32
fn anim_duration(&self) -> f32
anim_target).
Default: the framework’s standard duration.Source§fn anim_curve(&self) -> Curve
fn anim_curve(&self) -> Curve
anim_target).
Default: linear.Source§fn opacity_group(&self) -> Option<f32>
fn opacity_group(&self) -> Option<f32>
[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>
fn anim_color(&self) -> Option<Color>
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>
fn anim_size(&self) -> Option<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>
fn anim_radius(&self) -> Option<BorderRadius>
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>
fn anim_padding(&self) -> Option<Insets>
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)>
fn anim_offset(&self) -> Option<(f32, f32)>
None — the default — leaves the rule
reading the widget’s own numbers. Read moreSource§fn anim_pins(&self) -> Option<Positioning>
fn anim_pins(&self) -> Option<Positioning>
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 moreSource§fn anim_fractions(&self) -> Option<(Option<f32>, Option<f32>)>
fn anim_fractions(&self) -> Option<(Option<f32>, Option<f32>)>
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 moreSource§fn anim_text_style(&self) -> Option<TextStyle>
fn anim_text_style(&self) -> Option<TextStyle>
AnimatedDefaultTextStyle). None = the subtree inherits whatever it inherits. Read moreSource§fn alignment_geometry(&self) -> Option<AlignmentGeometry>
fn alignment_geometry(&self) -> Option<AlignmentGeometry>
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)>
fn transform_translate(&self) -> Option<(f32, f32)>
(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)>
fn translate_fraction(&self) -> Option<(f32, f32)>
(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 moreSource§fn transform_scale(&self) -> Option<(f32, f32, Alignment)>
fn transform_scale(&self) -> Option<(f32, f32, Alignment)>
(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)>
fn transform_rotate(&self) -> Option<(f32, Alignment)>
(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>
fn clip_shape(&self) -> Option<ClipShape>
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 theme_override(&self, _inherited: &Theme) -> Option<Box<Theme>>
fn theme_override(&self, _inherited: &Theme) -> Option<Box<Theme>>
None — the default — means “whatever came down from above”, which is
what every widget but crate::Themed answers. Read moreSource§fn media_override(&self, _inherited: MediaQuery) -> Option<MediaQuery>
fn media_override(&self, _inherited: MediaQuery) -> Option<MediaQuery>
None — the default — means “whatever came down from above”, which is
what every widget but MediaScope answers. Read moreSource§fn scaffold_override(&self) -> Option<ScaffoldInfo>
fn scaffold_override(&self) -> Option<ScaffoldInfo>
Source§fn build_themed(&self, _theme: &Theme)
fn build_themed(&self, _theme: &Theme)
ThemeBuilder. Does nothing by
default, which is what all but a handful of widgets want. Read moreSource§fn build_in(&self, _id: WidgetId, _runtime: &Runtime, theme: &Theme)
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 moreSource§fn expand(&self, _id: WidgetId, _runtime: &Runtime, _theme: &Theme)
fn expand(&self, _id: WidgetId, _runtime: &Runtime, _theme: &Theme)
Source§fn switches(&self) -> bool
fn switches(&self) -> bool
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>
fn system_ui_style(&self) -> Option<SystemUiOverlayStyle>
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>
fn ink(&self, _theme: &Theme) -> Option<InkStyle>
None = no ink, which is the default: a
widget has to ask. Read moreSource§fn foreground(&self, _theme: &Theme) -> Option<BoxDecoration>
fn foreground(&self, _theme: &Theme) -> Option<BoxDecoration>
foregroundDecoration. Read moreSource§fn layer_filter(&self, _cx: FilterContext) -> Option<LayerFilter>
fn layer_filter(&self, _cx: FilterContext) -> Option<LayerFilter>
Source§fn backdrop_group(&self) -> bool
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 ignores_baseline(&self) -> bool
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 tile_shape(&self) -> Option<f32>
fn tile_shape(&self) -> Option<f32>
width / height ratio to impose on each of them. None = each child keeps
its own shape. Read moreSource§fn positioned(&self) -> Option<Positioning>
fn positioned(&self) -> Option<Positioning>
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 moreSource§fn stack_loose(&self) -> bool
fn stack_loose(&self) -> bool
crate::StackFit. Meaningless unless Widget::stack is true.Source§fn stack_visible(&self) -> Option<usize>
fn stack_visible(&self) -> Option<usize>
None, the default, shows all of them. Read moreSource§fn keep_visible(&self, _size: Size, _theme: &Theme) -> Option<KeepVisible>
fn keep_visible(&self, _size: Size, _theme: &Theme) -> Option<KeepVisible>
Source§fn scroll_reverse(&self) -> bool
fn scroll_reverse(&self) -> bool
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
fn scroll_padding(&self) -> Insets
Source§fn baseline_target(&self) -> Option<f32>
fn baseline_target(&self) -> Option<f32>
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>
fn clip_path(&self) -> Option<&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>
fn dismissible(&self) -> Option<DismissSpec>
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>
fn on_dismissed(&self, _direction: DismissDirection) -> Option<Msg>
None = the swipe is shown but removes nothing.Source§fn sheet(&self) -> Option<&SheetSpec>
fn sheet(&self) -> Option<&SheetSpec>
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>
fn on_sheet_dismissed(&self) -> Option<Msg>
None = it
cannot be dismissed, or says nothing when it is.Source§fn refresh(&self) -> Option<RefreshSpec>
fn refresh(&self) -> Option<RefreshSpec>
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>
fn on_refresh(&self) -> Option<Msg>
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>
fn barrier(&self) -> Option<ModalBarrier>
None = nothing withheld (the default). See crate::ModalBarrier,
crate::IgnorePointer, crate::AbsorbPointer, crate::Visibility,
crate::ExcludeSemantics.Source§fn interactive(&self) -> Option<(f32, f32)>
fn interactive(&self) -> Option<(f32, f32)>
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>
fn fitted(&self) -> Option<BoxFit>
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>
fn rotated_quarter_turns(&self) -> Option<i32>
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.(progress, push?). Its children
([screen] or [outgoing, incoming]) are rendered full-window with a sliding
transition.0, the default, is a navigator that shows every
page it holds.Source§fn on_long_press(&self) -> Option<Msg>
fn on_long_press(&self) -> Option<Msg>
on_click.Source§fn on_key(&self, _key: &Key) -> KeyResponse<Msg>
fn on_key(&self, _key: &Key) -> KeyResponse<Msg>
Ignored. (E.g. an OverlayPortal
consumes Escape to close itself.)