pub struct SliderView<State: 'static> { /* private fields */ }Expand description
A declarative M3E slider. See the module docs.
Implementations§
Source§impl<State: 'static> SliderView<State>
impl<State: 'static> SliderView<State>
Sourcepub fn range(self, min: f64, max: f64) -> Self
pub fn range(self, min: f64, max: f64) -> Self
Set the value bounds (M3ESlider.min/max, defaulting to 0..=1).
Upstream asserts max > min (m3e_sliders.dart:95); an inverted or
empty range debug_assert!s here and otherwise degrades to a slider
pinned at its minimum — never a panic in a shipped app.
Sourcepub fn divisions(self, divisions: u32) -> Self
pub fn divisions(self, divisions: u32) -> Self
Step the slider into divisions equal intervals
(M3ESlider.divisions): divisions + 1 stops, endpoints included.
0 is treated as continuous, matching upstream’s <= 0 guard.
Sourcepub fn on_change_end<F: Fn(&mut State, f64) + 'static>(
self,
on_change_end: F,
) -> Self
pub fn on_change_end<F: Fn(&mut State, f64) + 'static>( self, on_change_end: F, ) -> Self
Fire on_change_end(state, value) when an interaction settles
(M3ESlider.onChangeEnd). A cancelled drag never fires it — see the
module docs.
Sourcepub fn label(self, label: impl Into<String>) -> Self
pub fn label(self, label: impl Into<String>) -> Self
Override the value indicator’s text (M3ESlider.label). Without one it
is the rounded value on a discrete slider and a two-decimal one
otherwise (m3e_slider_build.dart:88-92).
Sourcepub fn enabled(self, enabled: bool) -> Self
pub fn enabled(self, enabled: bool) -> Self
Gate interaction and switch to the disabled colour table
(M3ESlider.enabled). Upstream also treats a null onChanged as
disabled; this crate’s controlled-component contract always takes a
concrete callback, so the flag is the only switch.
Sourcepub fn haptic(self, haptic: HapticSignal) -> Self
pub fn haptic(self, haptic: HapticSignal) -> Self
Opt into haptic feedback on value changes (M3ESlider.haptic,
defaulting to none). See the module docs’ Haptics section.
Sourcepub fn top_to_bottom(self, top_to_bottom: bool) -> Self
pub fn top_to_bottom(self, top_to_bottom: bool) -> Self
Map the vertical track’s top edge to the minimum
(M3ESlider.topToBottom), instead of the default bottom-up
orientation. Inert on a horizontal slider, which has no such choice
here (RTL is not wired — see the module docs).
Sourcepub fn wavelength(self, wavelength: f64) -> Self
pub fn wavelength(self, wavelength: f64) -> Self
Length of one full wave cycle, in logical px (M3ESlider.wavelength,
defaulting to 40). Inert unless the slider is wavy.
Sourcepub fn wave_speed(self, wave_speed: f64) -> Self
pub fn wave_speed(self, wave_speed: f64) -> Self
How fast the wave travels, in logical px per second
(M3ESlider.waveSpeed, defaulting to the wavelength — one cycle per
second). Inert unless the slider is wavy.
Sourcepub fn amplitude(self, amplitude: f64) -> Self
pub fn amplitude(self, amplitude: f64) -> Self
Fix the wave’s amplitude factor (0..=1, M3ESlider.amplitude),
replacing the default end-of-track ramp. Inert unless the slider is
wavy; outranked by Self::amplitude_for_progress.
Sourcepub fn amplitude_for_progress<F: Fn(f64) -> f64 + 'static>(
self,
curve: F,
) -> Self
pub fn amplitude_for_progress<F: Fn(f64) -> f64 + 'static>( self, curve: F, ) -> Self
Drive the wave’s amplitude factor from the current progress
(M3ESlider.amplitudeForProgress), the highest-precedence of the three
amplitude sources. The return is clamped to 0..=1. Inert unless the
slider is wavy.
Sourcepub fn icon(self, icon: IconSource) -> Self
pub fn icon(self, icon: IconSource) -> Self
Show a relocating icon at one track end (M3ESlider.icon), which docks
beside the thumb rather than letting it cover the icon.
Upstream asserts this is mutually exclusive with divisions
(m3e_sliders.dart:96-99); here the pair debug_assert!s at build and
the icon is simply not painted on a discrete slider. Either way the
track’s stop indicators give up their place to the icon.
Sourcepub fn icon_position(self, position: SliderIconPosition) -> Self
pub fn icon_position(self, position: SliderIconPosition) -> Self
Which end the relocating icon rests at
(M3ESlider.iconPosition).
Sourcepub fn icon_size(self, size: f64) -> Self
pub fn icon_size(self, size: f64) -> Self
Edge length of the relocating icon, in logical px
(M3ESlider.iconSize).
Sourcepub fn icon_edge_inset(self, inset: f64) -> Self
pub fn icon_edge_inset(self, inset: f64) -> Self
Clear space between the track edge and the relocating
icon’s outer edge (M3ESlider.iconEdgeInset).
Sourcepub fn track_icons(self, icons: SliderTrackIcons) -> Self
pub fn track_icons(self, icons: SliderTrackIcons) -> Self
Inset icons for the track’s own segments (M3ESlider.trackIcons).
Sourcepub fn track_thickness(self, thickness: f64) -> Self
pub fn track_thickness(self, thickness: f64) -> Self
Thickness of both track segments, in logical px
(M3ESlider.trackThickness).
Sourcepub fn corner_radius(self, radius: f64) -> Self
pub fn corner_radius(self, radius: f64) -> Self
Outer corner radius of both track segments, in logical px
(M3ESlider.cornerRadius); clamped to half the track thickness.
Sourcepub fn thumb_length(self, length: f64) -> Self
pub fn thumb_length(self, length: f64) -> Self
Length of the thumb along the cross axis, in logical px
(M3ESlider.thumbLength).
Sourcepub fn dot_size(self, size: f64) -> Self
pub fn dot_size(self, size: f64) -> Self
Diameter of the stop/tick markers, in logical px
(M3ESlider.dotSize).
Sourcepub fn dot_spacing(self, spacing: f64) -> Self
pub fn dot_spacing(self, spacing: f64) -> Self
Clear space between each track end and the outer edge of its marker, in
logical px (M3ESlider.dotSpacing).
Trait Implementations§
Source§impl<State: 'static> View<State> for SliderView<State>
impl<State: 'static> View<State> for SliderView<State>
Source§type Element = SliderWidget
type Element = SliderWidget
Source§fn build(&self, _ctx: &mut BuildCtx<'_>) -> SliderWidget
fn build(&self, _ctx: &mut BuildCtx<'_>) -> SliderWidget
Source§fn rebuild(
&self,
prev: &Self,
element: &mut SliderWidget,
_ctx: &mut BuildCtx<'_>,
) -> ChangeFlags
fn rebuild( &self, prev: &Self, element: &mut SliderWidget, _ctx: &mut BuildCtx<'_>, ) -> ChangeFlags
prev (the previous view of the same type) against the live
element, mutating it in place and reporting what changed.Auto Trait Implementations§
impl<State> !RefUnwindSafe for SliderView<State>
impl<State> !Send for SliderView<State>
impl<State> !Sync for SliderView<State>
impl<State> !UnwindSafe for SliderView<State>
impl<State> Freeze for SliderView<State>
impl<State> Unpin for SliderView<State>
impl<State> UnsafeUnpin for SliderView<State>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.